代码之家  ›  专栏  ›  技术社区  ›  Jay

JPA中的多个唯一约束

  •  75
  • Jay  · 技术社区  · 16 年前

    有没有一种方法可以使用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 回复  |  直到 16 年前
        1
  •  134
  •   Bozho    16 年前

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

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

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

    推荐文章