JPA中的多个唯一约束

时间:2010-08-04 11:00:55

标签: java hibernate jpa orm datanucleus

有没有办法指定使用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 个答案:

答案 0 :(得分:118)

@Table的属性uniqueConstraints实际上接受了这些属性的数组。您的示例只是具有单个元素的数组的简写。它看起来像是:

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

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