【问题标题】:Merging in JPA / Hibernate based on unique key instead of primary key基于唯一键而不是主键在 JPA / Hibernate 中合并
【发布时间】:2016-06-07 20:49:34
【问题描述】:

在 JPA 或 Hibernate 中,是否可以基于主键以外的唯一键将新实体(没有主键值)合并到持久化上下文中?

还是所有 JPA / Hibernate 合并仅在主键上执行?

如果通过简单的方法调用无法做到这一点,我唯一的选择是:

  1. 用唯一键替换现有主键
  2. 编写代码,使用唯一键中的属性值查找任何现有实体。如果我要这样做,我想我会编写一个静态方法来查找@UniqueConstraint 注释,并根据@UniqueConstraints 中的属性搜索现有实体。我会尝试合并到为任何@UniqueConstraints 找到的第一个实体。如果没有匹配项,那么我可以保留新实体。

【问题讨论】:

    标签: hibernate jpa unique-constraint jpa-2.1 unique-key


    【解决方案1】:

    Hibernate 只需要 @Id 属性的唯一键,虽然通常主键用于此目的,但您可以为 @Id 属性使用任何唯一键。

    此外,您可以将主键用于@Id 属性,并将唯一键用作@NaturalId。您可以通过其自然 ID 获取实体,然后将其合并到不同的 Session,因为合并需要一个实体而不是一个标识符。

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 2018-02-02
      • 2018-01-13
      • 1970-01-01
      • 2012-06-17
      相关资源
      最近更新 更多