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