有没有办法指定使用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。
答案 0 :(得分:118)
@Table
的属性uniqueConstraints
实际上接受了这些属性的数组。您的示例只是具有单个元素的数组的简写。它看起来像是:
@Table(name="person", uniqueConstraints={
@UniqueConstraint(columnNames={"code", "uid"}),
@UniqueConstraint(columnNames={"anotherField", "uid"})
})
每当唯一约束仅基于一个字段时,您可以在该列上使用@Column(unique=true)
。