Почему метод сессионного компонента генерирует исключение EjbTransactionRolledbackException, когда было сгенерировано исключение RuntimeException

Я пытаюсь сохранить объект с проверкой ограничений, когда вызов сохраняется - возникает ограничение, и вызывающий получает EjbTransactionRolledbackException ... поэтому я пытаюсь вызвать проверку явным образом и выбросить ConstraintViolationException / RuntimeException , а вызывающий абонент получит EjbTransactionRolledbackException ... когда я выбрасываю MyException extends 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);
}
5
задан Pascal Thivent 25 September 2010 в 12:27
поделиться