代码之家  ›  专栏  ›  技术社区  ›  Carles Barrobés

在休眠中指定“唯一在一起”的限制

  •  3
  • Carles Barrobés  · 技术社区  · 15 年前

    我有一个实体,我想在其中指定一个限制,两个字段应该有一个唯一的对值。例如,一个字段是所有者,另一个字段是名称,我希望限制(所有者、名称)的组合应是唯一的。但我不想让这些成为复合主键:

    @Entity
    @Table(name="keyfile")
    public class KeyFile {
    
       @Id @GeneratedValue(strategy=GenerationType.AUTO)
       private Long id;
       @ManyToOne @ForeignKey(name="FK_SIGNATUREID_USER")
       private User owner;
       @Column(nullable=false,length=80)
       private String name;
    }
    

    如何使用Hibernate注释指定此限制?

    1 回复  |  直到 15 年前
        1
  •  5
  •   Andreas    15 年前

    尝试下面提到的解决方案:

    https://forum.hibernate.org/viewtopic.php?p=2370666

    它是

    @Entity
    @Table(name="keyfile",
           uniqueConstraints = {@UniqueConstraint(columnNames={"owner", "name"})}
    public class KeyFile { ... }