Как мне перехватить исключения из фиксации транзакции, управляемой контейнером?

У меня есть EJB @Stateless с интерфейсом @WebService , с использованием транзакций, управляемых контейнером, то есть транзакции автоматически фиксируются контейнером после вызова метода, если он не генерирует системное исключение.

Если я попытаюсь EntityManager.persist (...) два объекта с одинаковым значением для столбца с уникальным ограничением на него, контейнер выдаст клиенту исключение PersistenceException при фиксации вне моего кода. Как мне перехватить это исключение, чтобы я мог повторно создать собственное исключение приложения?

Должен ли я вручную фиксировать транзакцию в моих методах, чтобы перехватить исключения при фиксации? (И является ли EntityManager.flush () правильный способ сделать это?) Если да, то какой смысл иметь транзакции, управляемые контейнером?

5
задан Christoffer Hammarström 8 October 2010 в 09:22
поделиться