Warum Session-Bean-Methode EjbTransactionRolledbackException auslösen, wenn RuntimeException ausgelöst wurde
Ich versuche, die Entität mit Einschränkungsüberprüfung beizubehalten, wenn der Aufruf fortbesteht. Es gibt eine Einschränkung, die ausgelöst wird, und der Aufrufer erhält EjbTransactionRolledbackException
... also versuche ich die Validierung explizit aufzurufen und @ zu werfConstraintViolationException
/RuntimeException
und trotzdem bekommt der AnruferEjbTransactionRolledbackException
... wenn ich @ werMyException
erweitertException
- der Anrufer bekommtMyException
Auch wenn ich explizit @ anrusc.setRollBackOnly
es ist noch passiert:
Dies sollte nicht das Verhalten sein.
Was ist los
Aufbau
Netbeans 6.9.1 Glassfish 3.0.1 JPA 2.0 (EclipseLink) EJB 3.1
Vielen Dank!!
@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);
}