JPA中的多个唯一约束

有没有一种方法来指定使用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; } 

我已经看到一个冬眠特定的注释,但我试图避免供应商的具体解决scheme,因为我们仍然决定hibernate和数据核心之间。

@Table的属性uniqueConstraints实际上接受这些数组。 你的例子只是一个单一元素的数组的缩写。 不然,它会看起来像:

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

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