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