有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Hibernate JPA2上使用唯一约束

如何在hibernate POJO上实现我的唯一约束?假设数据库不包含任何

我在@Column()注释中看到了unique属性,但我无法使它工作
如果要将此约束应用于多个列,该怎么办


共 (3) 个答案

  1. # 1 楼答案

    在JPA2中,可以将唯一约束直接添加到字段:

    @Entity
    @Table(name="PERSON_TABLE") 
    public class Person{
      @Id
      @Column(name = "UUID")
      private String id;
    
      @Column(name = "SOCIALSECURITY", unique=true)
      private String socialSecurityNumber;
    
      @Column(name = "LOGINID", unique=true)
      private String loginId;
    }
    

    IMHO将唯一约束直接指定给属性要比在表中指定时好得多

    但是,如果需要声明复合唯一键,那么在@table注释中声明它是您唯一的选择

  2. # 2 楼答案

    基本上,如果没有数据库支持,就无法实现唯一约束

    @Column@UniqueConstraintunique属性是模式生成工具生成相应约束的指令,它们本身不实现约束

    您可以在插入新实体之前进行某种手动检查,但在这种情况下,您应该注意并发事务可能存在的问题

    因此,在数据库中应用约束是首选

  3. # 3 楼答案

    可以在类中使用@Table(uniqueConstraints = ...)注释声明唯一约束

    @Entity
    @Table(uniqueConstraints=
               @UniqueConstraint(columnNames = {"surname", "name"})) 
    public class SomeEntity {
        ...
    }