【问题标题】:JPA merge generates duplicates for every actionJPA 合并为每个操作生成重复项
【发布时间】:2014-09-22 06:43:09
【问题描述】:

当尝试将实体与 JPA(eclipselink 实现)合并时,包含实体上的每个操作都会重复。为什么?

为了更具体: 我有一个situation,里面有parcels。如果我要添加一个parcel,一切正常。如果我在不离开视图的情况下添加两个 parcels(使用 viewScoped 支持 bean),我将得到 3 个 parcels

这怎么可能?

我在situation 上使用merge 方法来保存添加的parcels

除了合并之外,backingBean 中没有发生任何其他事情。

【问题讨论】:

  • 你需要发布代码,而不是描述代码模糊地做了什么。
  • 我的猜测是实际上并不需要代码。我还注意到 parcels 的 ID 在调用合并后未填充,尽管它们是在从 situation 调用合并后立即添加到数据库中的。
  • 你的代码没有做你期望的事情,然后你猜你不需要发布任何代码?
  • 我敢肯定,只有在您知道自己在做什么的情况下,您才会知道阅读说明有什么问题。啊nvm,反正我会想办法的..
  • 我猜你的代码是超级机密的。祝你好运。

标签: java jpa merge duplicates


【解决方案1】:

通过调用parcels 上的create 方法而不是调用situation 上的merge 方法(创建包裹)来修复它。因此,在实体上调用 create 而不是在包含实体上合并来修复它。

由于 hashCode 和 equals 问题,newSituation 上的合并不起作用。 (见The JPA hashCode() / equals() dilemma

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多