У меня есть метод @Stateless EJB, в котором я (...)
Просто чтобы уточнить, как вы получаете EntityManager?
(...) Я установил @TransactionAttribute (TransactionAttributeType.REQUIRED
Действительно, это значение по умолчанию и не должно требоваться в любом случае.
И все же, транзакцияне откатывается при возникновении исключения. Например, записи, которые я удалил из базы данных до отката, не возвращаются.
Хм, это очень странно и неожиданно.
Кстати, я вызываю entityManager.flush () перед броском, может ли это вызвать такое поведение (не должно)?
Нет, flush! = Commit
Я также пытался вызвать SessionContext.setRollbackOnly (), с тем же результатом.
Ну, все же неожиданно (но по крайней мере непротиворечиво ...).
Я использую Glassfish v3 и Netbeans для отладки
Возможно, активируйте ведение журнала следующих категорийories (например, через консоль администратора в разделе «Конфигурация»> «Ведение журнала»> «Уровни журнала»), чтобы узнать, можно ли обнаружить что-то странное:
- javax.enterprise.system.core.transaction
- javaxenterprise.resource.jta
- javax.enterprise.system.container.ejb
В качестве альтернативы (своего рода «ведение журнала бедняков»), вы можете реализовать SessionSynchronization
, чтобы получить уведомление о транзакции.
Действительно странная проблема ...
См. Также