0

我有一个 Hibernate APP,我们正在尝试Open Session in View Pattern用 ZK 实现我有一个问题 Hibernate 为每个线程创建一个会话并关闭它,但是我们在一个会话中使用 [标准和保存或更新] 方法进行了多次操作,我们开始使用更新方法实现我们很快就收到了臭名昭著的

NONUNIQUEOBJECTEXCEPTION 

如果以下内容,我们已更改update()merge()我的问题。

如果我有一Student堂课并尝试使用update[making sure is not in session avoid the exception]但后来在其他方法中更新学生,则要求学生再次更新,与以前不同,这次update我们应该调用方法。我想知道什么时候调用方法对第一个学生的更改是损失?两个学生的变化都可以吗?发生什么了??mergingmerge()[flush][commit]

恐怕首先student是损失的变化!在这种情况下我该怎么办?

非常感谢。

4

1 回答 1

0

你应该看看锁定算法。有两种流行的:乐观和悲观。对于 Web 应用程序,乐观锁定通常效果更好。长话短说,实体对象的每个修订版都有一个版本标签(通常是 bigint 或字符串 db 列)。当有人抢先你的更新并且你的版本变得陈旧时,hibernate 会抛出乐观锁异常,在这种情况下你可以捕获并询问用户要做什么(或采取其他适当的措施)

于 2013-07-11T12:40:59.920 回答