【问题标题】:How to persist Entity twice JPA如何将实体两次持久化JPA
【发布时间】:2013-06-16 07:38:42
【问题描述】:

我有一个实体,代表客户发送的订单,此订单可能会在与客户电话讨论后更新,但客户发送的初始订单必须保持不变。 我如何将同一实体保存两次,使用深度克隆是否有效。 我试图分离实体以使持久性上下文持久化一个新实体,但持久性上下文仍在更新第一个条目。

【问题讨论】:

  • 您需要保留原始订单的所有内容吗?还是只是更新订单的内容?
  • 我想按原样保留原始订单,并在与客户讨论时能够更新,无论如何我找到了一个复制整个实体及其依赖项的类。跨度>

标签: java jpa


【解决方案1】:

您不能在一个会话中将一个对象持久化两次,因此您需要复制您的订单并再次保存(持久化)它。 hibernate copy object values into new object with new generated ID

【讨论】:

    【解决方案2】:

    这是一个有趣的问题。我认为最快的解决方案可能是使用多部分 ID。第一部分将是原始订单号,然后每次更改都会增加密钥的第二部分。在您的代码中,您只需要找到该对象,确保它已分离,更改密钥的第二部分,然后将其持久化。只要它被分离,它就应该作为新订单保存起来。

    这篇文章向您展示了如何使用composite key

    【讨论】:

      【解决方案3】:

      您需要克隆/复制对象,确保它具有唯一的 id(如果生成,则为 null)。

      在 EclipseLink 中有一个用于复制对象的 API,

      http://wiki.eclipse.org/EclipseLink/Examples/JPA/AttributeGroup#Copy_Examples

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 2017-06-22
        • 1970-01-01
        • 1970-01-01
        • 2011-07-16
        • 1970-01-01
        • 2018-03-18
        相关资源
        最近更新 更多