JPA如何知道何时必须抛出OptimisticLockException? [英] How JPA knows when it have to throw OptimisticLockException?
本文介绍了JPA如何知道何时必须抛出OptimisticLockException?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想确认以下内容:
public void test() {
SomeEntity se = em.find(SomeEntity.class, 1);
// Do something...
se.setField = "test";
}
JPA将仅对se
执行乐观检查.
Here JPA will perform only optimistic check on se
.
下一步:
public void test() {
SomeEntity se = em.find(SomeEntity.class, 1);
SomeOtherEntity soe = em.find(SomeOtherEntity.class, 1);
em.lock(soe, LockModeType.OPTIMISTIC);
// Do something...
se.setField = "test";
}
如果自上次读取以来更改了se
或soe
(数据库中的版本增加),则JPA将引发OptimisticException.
Here JPA will throw OptimisticException if se
OR soe
have been changed (version incremented in database) since last read.
是真的吗?
推荐答案
OptimisticLockException 仅在事务提交到您调用em.flush()
的数据库时才抛出-然后,JPA Provider将比较版本字段和数字知道它被另一个转蛋白改变了.
OptimisticLockException will be throw only when transaction commits to database ore you call em.flush()
- then JPA Provider will compare version field and figure out that it was changed by another transactoin.
这篇关于JPA如何知道何时必须抛出OptimisticLockException?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文