JPA中的多个唯一约束条件

85

在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和Datanucleus之间做出决定。
1个回答

137

@Table 的属性 uniqueConstraints 实际上接受一个这些元素组成的数组。你的示例只是一个使用单个元素的简写方式。否则,它可能会像这样:

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

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


3
我目前有这个注释,但似乎Hibernate没有为表生成索引,无论该表是否已存在(并且已设置为更新),或者如果我删除了该表并让Hibernate自动生成它。 我有遗漏什么吗? - Kevin M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接