JPA中的多个唯一约束

Jac*_*cob 77 java orm hibernate jpa 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;
}
Run Code Online (Sandbox Code Playgroud)

我已经看到了一个特定于hibernate的注释,但我正在尝试避免供应商特定的解决方案,因为我们仍然在决定hibernate和datanucleus之间.

Boz*_*zho 125

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

@Table(name="person",  uniqueConstraints={
   @UniqueConstraint(columnNames={"code", "uid"}),
   @UniqueConstraint(columnNames={"anotherField", "uid"})
})
Run Code Online (Sandbox Code Playgroud)

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

  • 我目前有这个注释,但似乎 Hibernate 没有为表生成索引,无论该表是否已经存在(并且它已设置为更新),或者是否我删除了该表并让 Hibernate 自动生成它。我错过了什么吗? (3认同)