永続化を呼び出すときに、制約の検証を使用してエンティティを永続化しようとしています-スローされ、呼び出し元が取得する制約があります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);
}