[英]Java Hibernate Session in View Merge loses Changes?
我有一个Hibernate APP,我们正在尝试使用ZK Open Session in View Pattern
实现Open Session in View Pattern
我有一个问题,Hibernate为每个线程创建一个会话并关闭它,但是在我们开始使用的一个会话中,我们有几个使用[criteria and save or update]方法的操作。使用更新方法实现我们很快就收到了臭名昭著的通知
NONUNIQUEOBJECTEXCEPTION
如果发生以下情况,我们已将update()
更改为merge()
我的问题。
如果我有一个Student
班级,并尝试使用update[making sure is not in session avoid the exception]
来更新该学生,但是以后在另一种方法中,该学生需要再次不同于先前的update
这次我们应该merging
并merge()
方法被调用。 我想知道什么时候[flush][commit]
方法被称为第一个学生的更改丢失? 对两个学生的更改都可以吗? 怎么了??
恐怕第一个student
的变化是损失! 在这种情况下我该怎么办?
非常感谢。
您应该看看锁定算法。 流行的有2种:乐观和悲观。 对于Web应用程序,乐观锁定通常效果更好。 长话短说,实体对象的每个修订版都有一个版本标签(通常是bigint或字符串db列)。 当有人抢占您的更新并且您的版本过时时,休眠将抛出乐观锁异常,在这种情况下,您可以捕获并询问用户该怎么做(或采取其他适当措施)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.