我有一个@Stateless
带有@WebService
接口的 EJB,使用容器管理的事务,这意味着事务在调用方法后由容器自动提交,如果它不引发系统异常。
如果我尝试对EntityManager.persist(...)
具有唯一约束的列使用具有相同值的两个对象,则容器将PersistenceException
在我的代码之外提交时向客户端抛出一个。我如何捕捉这个异常,以便我可以重新抛出我自己的应用程序异常?
我是否必须在我的方法中手动提交事务才能在提交时捕获异常?(EntityManager.flush()
这样做是正确的方法吗?)如果是这样,容器管理事务的意义何在?