JPA中的多个唯一约束


84

有没有一种方法可以使用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;
}

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

Answers:


130

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

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

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


2
我目前有此批注,但似乎Hibernate不会为该表生成索引,无论该表是否已存在(并且已设置为更新),或者如果我删除该表并让Hibernate自动生成它。我想念什么吗?
凯文M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.