休眠合并

休眠合并,第1张

休眠合并

我将尝试使用一个更具体的示例进行解释。假设您有以下情况:

Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();User userA = (User)session.get(User.class, 1101);transaction.commit();session.close();// Since session is closed, userA is detached.session = sessionFactory.openSession();transaction = session.beginTransaction();User userB = (User)session.get(User.class, 1101);//Now here,  userB represents the same persistent row as userA.//When an attempt to reattach userA occurs, an exception is thrownsession.update(userA);transaction.commit();session.close();

尝试重新附加分离的对象时发生异常,userA。

Exception in thread "main" org.hibernate.NonUniqueObjectException: a   different object with the same identifier value was already associatedwith the session:This is because Hibernate is enforcing that only a single instance of a Persistent    object exists in memory.

为了解决上述问题,使用了merge(),如下所示:

Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();User userA = (User)session.get(User.class, 1101);transaction.commit();session.close();//userA is now detached as session is closed.session = sessionFactory.openSession();transaction = session.beginTransaction();User userB = (User)session.get(User.class, 1101);User userC = (User)session.merge(userA);if (userB == userC) {  System.out.println("Reattched user is equal");}transaction.commit();session.close();


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5011002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存