2013-10-01 39 views
0

我們使用Grails和Hibernate。我們在日誌中獲得org.hibernate.StaleObjectStateException。我發現這可能會發生,因爲樂觀的鎖定失敗。精細。但是,我想確保這絕不會發生在同一個線程的多個更新中。我的意思是永遠不會。有沒有任何一個角落的情況下,有多個更新到相同的休眠實體,但都來自同一個線程,可能會導致此異常?是否可以從單個線程拋出StaleStateObjectException異常?

感謝,

回答

1

我沒有嘗試,但我希望這個錯誤從這個代碼:

Foo foo1 = session.get(Foo.class, 1); 
Foo foo2 = session.get(Foo.class, 1); // same ID 

foo1.setBar(1); 
foo2.setBar(2); 

session.saveOrUpdate(foo1); 
session.saveOrUpdate(foo2); // Should throw an error 

這可能發生,例如,當你有在同一個複雜的工作,幫助對象實體。

+0

我認爲Hibernate確保當你從同一個會話中多次獲取同一個id時,你會得到相同的(== ==)對象嗎? –

+0

@Aoron Digulla你如何在grails中獲得hibernate會話? –

+0

@IanRoberts:它應該但我不確定這取決於什麼以及它有多聰明。 –