2011-01-06 96 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”语句(或等效)

相关问题