相关疑难解决方法(0)

为什么会话bean方法在抛出RuntimeException时抛出EjbTransactionRolledbackException

我试图通过约束验证来持久化实体,当调用持久化时 - 抛出约束并且调用者得到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)

java bean-validation java-ee-6 jpa-2.0 ejb-3.1

5
推荐指数
1
解决办法
9534
查看次数

标签 统计

bean-validation ×1

ejb-3.1 ×1

java ×1

java-ee-6 ×1

jpa-2.0 ×1