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;
}

我已经看到了特定于休眠的注释,但我试图避免特定于供应商的解决方案,因为我们仍在休眠和数据核之间做出决定。

4

1 回答 1

136

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

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

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

于 2010-08-04T11:15:50.863 回答