【发布时间】:2010-09-25 11:45:26
【问题描述】:
我正在尝试通过约束验证来持久化实体,
当调用持久化时-抛出约束并且调用者得到EjbTransactionRolledbackException...
所以我尝试显式调用验证并抛出ConstraintViolationException/RuntimeException,调用者仍然得到EjbTransactionRolledbackException...
当我抛出MyException 扩展Exception - 调用者得到MyException
即使我调用明确的sc.setRollBackOnly 它仍然会发生:(
这不应该是这种行为。
发生了什么事?
配置:
Netbeans 6.9.1 玻璃鱼 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);
}
【问题讨论】:
标签: java java-ee-6 jpa-2.0 ejb-3.1 bean-validation