【问题标题】:Multiple unique constraints in JPAJPA 中的多个唯一约束
【发布时间】:2011-03-25 04:59:18
【问题描述】:

有没有办法使用 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;
}

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

【问题讨论】:

    标签: java hibernate jpa orm datanucleus


    【解决方案1】:

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

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

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

    【讨论】:

    • 我目前有这个注释,但无论表是否已经存在(并且它已设置为更新),或者如果我删除表并让 Hibernate 自动生成,Hibernate 似乎都没有为表生成索引它。我错过了什么吗?
    猜你喜欢
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2011-03-30
    • 2018-07-25
    • 2011-09-10
    相关资源
    最近更新 更多