Postgresql 选择JPA中的查询&;乐观锁
当我锁定了其他内容时,我对某个SELECT查询有问题。例如: 我在Postgresql 选择JPA中的查询&;乐观锁,postgresql,jpa,optimistic-locking,Postgresql,Jpa,Optimistic Locking,当我锁定了其他内容时,我对某个SELECT查询有问题。例如: 我在表1中的一个对象上设置了一个乐观\u FORCE\u INCREMENT锁,同时还有另一个事务包含表2上的SELECT查询表2没有任何数据库对象(外键或其他类型的约束)将其连接到表1。但是当第二个SELECT查询发生时,将抛出OptimisticLockException 有人知道为什么会发生这种情况吗?乐观锁异常(OLE)不太可能仅由选择查询引发。我想你在什么地方做了更新 使用乐观锁定时,实体通常具有版本列(由@version注
表1
中的一个对象上设置了一个乐观\u FORCE\u INCREMENT
锁,同时还有另一个事务包含表2
上的SELECT查询<但是,代码>表2没有任何数据库对象(外键或其他类型的约束)将其连接到表1
。但是当第二个SELECT查询发生时,将抛出OptimisticLockException
有人知道为什么会发生这种情况吗?乐观锁异常(OLE)不太可能仅由选择查询引发。我想你在什么地方做了更新 使用乐观锁定时,实体通常具有版本列(由
@version
注释标记)。OLE通常发生在要同步到数据库的实体过时时。例如(以下每个步骤是一个单独的db事务):
通常,最好的做法是捕获OLE,并向用户显示一条消息,这样说:“嘿,有人编辑了同一个实体并首先保存了。是否要覆盖/合并/丢弃您的更改?”是的,正如我之前所写,它发生在Select上,因此没有进行更新、删除或更改,它发生在与锁定的实体完全不同的实体上。您的实体是否有
@Version
列?我正在锁定的那个列是的。但为什么在SELECT查询中发生优化锁定?我认为应该把它扔到进行更新的事务中