JPA 中的多个唯一约束

2022-08-31 12:08:07

有没有办法使用 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;
}

我已经看到了一个休眠特定的注释,但我试图避免供应商特定的解决方案,因为我们仍在休眠和数据核之间做出决定。


答案 1

的属性实际上接受这些的数组。您的示例只是具有单个元素的数组的简写。其他方面,它看起来像这样:@TableuniqueConstraints

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

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


答案 2

推荐