2011-01-06 128 views
1

我有一個交易使用一個實體管理員em1。在這個事務裏面,我調用一個方法。現在這個方法創建一個更多的實體管理者em2。現在em2對一些數據進行操作並返回一個對象。現在這個對象從db中填充一行的值。請注意,em2未關閉。 Somone還實現了這個API,我只是在使用它。是否被鎖定了一條記錄?

現在,如果我嘗試刪除由em1返回的記錄,我的代碼會掛起,然後超時。是因爲em1鎖定了特定的記錄嗎?

僞代碼是如果你正在使用的應用程序管理的EM則Hibernate會自動將其加入到當前事務休眠如下

start tx using em1 
Obj a = newSomeobject().getdata(id); //get data uses em2 and em2 is not closed. 
// now tx ties to update record returnd by getdata and the code times out 
+0

爲什麼沒有人回覆? – akshay 2011-01-06 17:04:54

+0

@ DataNucleus:我支持所有答案的previvious questions.I不知道我應該接受答案。本網站的新手 – akshay 2011-01-08 08:46:42

回答

0

在樂觀事務中,不應該鎖定這些對象。顯然,檢查發送到RDBMS的SQL將顯示任何「SELECT ... FOR UPDATE」語句(或等效)

相關問題