一尘不染

JPA中的多个唯一约束

hibernate

有没有一种方法可以使用JPA指定在不同的列集上应该有多个唯一约束?

@Entity
@Table(name="person", 
       uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))
public class Person {
    // Unique on code and uid
    public String code;
    public String uid;

    // Unique on username
    public String username;

    public String name;
    public String email;
}

我已经看到了特定于hibernate的注释,但是由于我们仍在确定hibernate和数据核之间的关系,因此我试图避免使用特定于供应商的解决方案。


阅读 925

收藏
2020-06-20

共1个答案

一尘不染

所述@Table的属性uniqueConstraints实际接受的这些阵列。您的示例只是具有单个元素的数组的简写。否则,它看起来像:

@Table(name="person",  uniqueConstraints={
   @UniqueConstraint(columnNames={"code", "uid"}),
   @UniqueConstraint(columnNames={"anotherField", "uid"})
})

只要唯一性约束仅基于一个字段,就可以@Column(unique=true)在该列上使用。

2020-06-20