我试图通过约束验证来持久化实体,当调用持久化时 - 抛出约束并且调用者得到EjbTransactionRolledbackException...所以我尝试显式调用验证并抛出ConstraintViolationException/ RuntimeException仍然调用者得到EjbTransactionRolledbackException...当我抛出MyException扩展时Exception - 来电者得到MyException
即使我打电话给sc.setRollBackOnly它显然它仍然发生:(
这不应该是行为.
这是怎么回事?
组态:
Netbeans 6.9.1 Glassfish 3.0.1 JPA 2.0(EclipseLink)EJB 3.1
谢谢!!!
@Stateless
public class My {
@PersistenceContext
EntityManager em;
@Resource
Validator validator;
public Order checkout(Order order) {
Set<ConstraintViolation<Order>> set = validator.validate(order, Default.class);
if (!set.isEmpty()) {
sc.setRollbackOnly();
//throw new ConstraintViolationException(new HashSet<ConstraintViolation<?>>(set));
throw new RuntimeException();
}
this.em.persist(order);
}
Run Code Online (Sandbox Code Playgroud)