0

我想确认以下内容:

public void test() {

   SomeEntity se = em.find(SomeEntity.class, 1);

   // Do something...

   se.setField = "test";

}

这里 JPA 将只对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如果自上次读取后ORsoe已更改(数据库中的版本增加),JPA 将在此处抛出 OptimisticException 。

真的吗 ?

4

1 回答 1

0

仅当事务提交到您调用的数据库时才会抛出OptimisticLockExceptionem.flush() - 然后 JPA 提供程序将比较版本字段并确定它已被另一个事务更改。

于 2016-02-12T16:31:12.703 回答