【问题标题】:Hibernate JPA uniquenessHibernate JPA 唯一性
【发布时间】:2016-07-25 21:49:42
【问题描述】:

假设这是一个具有唯一约束字段的类。

@Entity
public class Thing {

   @Column(name = "name", unique = true)
   private String name;

   @ManyToOne
   private Owner owner;

}

如果使用唯一名称创建新的Things,则示例工作正常。但是当不同的所有者想要创建具有相同名称的东西时,这种方法就失败了。

是否可以使用 Hibernate/JPA 功能(我找不到任何功能)基于 Owners 在数据库中设置不同的 Things 记录(我找不到),或者我应该编写自己的逻辑并转储 @987654327 @来自@Column

也许它可以用 Hibernate Validator 来完成?阅读docs,我没有找到太多关于唯一约束的信息。

【问题讨论】:

标签: java hibernate jpa


【解决方案1】:

【讨论】:

  • 我看不出建议的注释如何表现不同。它用于在表级别而不是列级别定义多个约束。我需要更多类似的跨表解决方案。
  • 在您的情况下,您不希望 name 是唯一的,而是 name 和 owner 的组合是唯一的。就目前而言,尝试添加与任何现有事物同名的第二个事物将违反您的列级唯一性约束。
  • 这更有意义。所以我可以用@UniqueConstraint(columnNames={"owner_id", "name"})之类的东西来注释Thing
  • 原来这样真的解决了问题。已接受答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
相关资源
最近更新 更多