0
我想有以下的確認:JPA如何知道何時拋出OptimisticLockException?
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
OR soe
已上次讀取改變(在數據庫增加的版本)JPA將拋出OptimisticException。
這是真的嗎?
是的......的確如此 – James
謝謝詹姆斯! –
不確定何時拋出OLE。我相信它是在'se'或'soe'被更改**和**之後拋出的,您嘗試更新它們。我的意思是'se.setField(「New Value」);''不會拋出異常,而是'se.setField(「New Value」); em.merge(SE); em.flush();'會。 –