繁体   English   中英

视图合并中的Java Hibernate会话会丢失更改吗?

[英]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这次我们应该mergingmerge()方法被调用。 我想知道什么时候[flush][commit]方法被称为第一个学生的更改丢失? 对两个学生的更改都可以吗? 怎么了??

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

非常感谢。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM