gpt4 book ai didi

java - 使用 Hibernate 获取当前修改的实体和数据库实体快照

转载 作者:行者123 更新时间:2023-11-30 03:32:23 29 4
gpt4 key购买 nike

我们使用seam作为Java EE框架。我有继承自 EntityHome 的 Controller 。当用户按下“保存”按钮时,我们有一个修改过的实体实例,但没有将此更改刷新到数据库中。

如何在两种状态下检索此实体(第一个 - 数据库状态,第二个用户修改状态)?

我尝试使用 enityManager.refresh(object),但它也会重置用户修改对象状态的所有更改。

我考虑了两次 session ,但我想知道是否有更好的解决方案?

最佳答案

你可以这样做:

  1. 您使用深度复制序列化/反序列化克隆当前附加的实体(这意味着您的所有实体都应该是可序列化的):

    MyEntity clonedObject = org.apache.commons.lang3.SerializationUtils.clone(object);
  2. 然后刷新当前附加的对象:

    session.refresh(object);

现在您拥有修改后的对象(例如 clonedObject)和原始实体版本(例如 object)。

如果你想合并clonedObject,你可以简单地这样做:

object = session.merge(clonedObject);

关于java - 使用 Hibernate 获取当前修改的实体和数据库实体快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28721966/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com