Jakarta ee Websphere上的乐观锁定块

Jakarta ee Websphere上的乐观锁定块,jakarta-ee,jpa,websphere,jpa-2.0,websphere-8,Jakarta Ee,Jpa,Websphere,Jpa 2.0,Websphere 8,我在使用WAS8.0.7的JPA中遇到了乐观锁定问题。 我有一个使用EJB3+JPA2(SQLServer,XA数据源)的Web项目。 我有两个JPA实体X和Y X和Y有一个单一的关系 这两个实体都有一个@Version字段(在相应的SQL表中有一个Version列) 虽然它是默认值,但我在persistence.xml中设置了一个 我使用容器管理的事务将实体X持久化在无状态EJB的方法X()中 方法x()创建并持久化实体x,并继续对x进行一些业务处理,直到它返回 假设从多个web请求调用方法x

我在使用WAS8.0.7的JPA中遇到了乐观锁定问题。 我有一个使用EJB3+JPA2(SQLServer,XA数据源)的Web项目。 我有两个JPA实体X和Y

X和Y有一个单一的关系

这两个实体都有一个@Version字段(在相应的SQL表中有一个Version列)

虽然它是默认值,但我在persistence.xml中设置了一个

我使用容器管理的事务将实体X持久化在无状态EJB的方法X()中

方法x()创建并持久化实体x,并继续对x进行一些业务处理,直到它返回

假设从多个web请求调用方法x()

第一个请求调用x()并创建一个x实体

同时,如果第二个请求调用方法x(),它将阻塞,直到第一个请求完成

这是使用乐观锁定的适当行为吗?如果有并发更新,第二个请求是否应该继续并抛出OptimisticLockException


相反,它只是阻塞,就像使用悲观锁定一样

检查数据源隔离级别设置()


高隔离级别可以锁定事务中引用的所有表(例如,
select
ed),直到事务结束

我不确定,但是访问意图配置文件是在CMPBean上使用的。无论如何,只有当我将隔离级别更改为
READ\u UNCOMMITTED
时,才没有阻塞。问题是对
READ\u COMMITTED
块使用乐观锁定。