2

我在这里阅读了几个关于OptimisticLockExceptionwith JPA 的问题,用于无状态会话 bean。它被抛出,但显然不是我期望的。

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

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

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

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

4

1 回答 1

4

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

或者,您可以在 JPA EntityManager 上调用 flush(),然后将引发错误。

于 2013-06-20T13:59:09.740 回答