如何在JPA中捕获OptimisticLockException

时间:2013-06-20 00:20:53

标签: java database jpa ejb optimistic-locking

我在这里读了几个关于OptimisticLockException和JPA的问题,用于无状态会话bean。它被抛出,但不是我所期望的那样。

以下是我希望得到异常的代码:

            try
            {
                productFacade.edit(product);
            }
            catch(Exception {
                return "lock";
            }

productFacade是使用NetBeans生成的,它是一个带有本地接口的EJB,它实现了一个AbstractFacade抽象类。据我所知,这与JPA中的事务有关。因为在保留此代码片段的方法之后抛出异常,而不是在调用edit()之后抛出异常。我应该在哪里处理异常?

另外,我将需要稍后的事务机制,因为我需要更新多个产品(如果某些产品被锁定,则不需要)。我找到了一些代码示例,但这让我想知道如何处理事务?

1 个答案:

答案 0 :(得分:4)

在事务提交之前不会抛出锁定错误。因此,您需要在SessionBean之外处理它或使用容器管理的事务。

或者,你可以在你的JPA EntityManager上调用flush(),然后就会抛出错误。