我有一个包含Set的Entity,如下所示:

@ElementCollection
Set<String> branches;


现在,Hibernate要做的是创建一个表project_branches(project_id |分支),并在branches上添加唯一约束。有什么办法告诉休眠的唯一约束应该同时涉及project_idbranches

我找不到这个问题的答案,尽管我认为我不是第一个遇到这个问题的人...谢谢

最佳答案

这取决于映射中涉及的列。

还有另一种配置。请考虑在实体级别添加UniqueConstraint注释,例如下面:

  @Table(name="project_branches",
    uniqueConstraints = {@UniqueConstraint(columnNames={"project_id", "branches"})}
  )


编辑:尝试使用@CollectionTable批注。

 @ElementCollection
 @CollectionTable(
    name="project_branches",
    joinColumns=@JoinColumn(name="branches"),
    uniqueConstraints = {@UniqueConstraint(columnNames={"project_id", "branches"})}
  )
  Set<String> branches;

09-11 15:34