【问题标题】:Unique Key Constraint in Spring Data JpaSpring Data Jpa 中的唯一键约束
【发布时间】:2017-08-06 21:44:23
【问题描述】:

如何使用 spring data jpa 使 pojo 中的字段唯一?我知道如何使用 jpa 做到这一点

供参考:multi column constraint with jpa

如果有办法,可以用spring boot吗?

【问题讨论】:

    标签: spring-boot spring-data


    【解决方案1】:

    使用@UniqueConstraint 批注指定唯一约束将包含在为主表或辅助表生成的DDL 中。

    或者,为了确保字段值是唯一的,您可以编写

    @Column(unique=true)
    String myField;
    

    【讨论】:

      【解决方案2】:

      使用 Spring Data JPA,您正在使用 JPA,因此您可以使用 JPA 指定唯一约束。在这方面,Spring Boot 或 Spring Data 没有什么特别之处。

      【讨论】:

      • 所以你是说我们只需要使用 jpa 来使其成为唯一约束。spring data jpa 中没有任何内容
      • 这是正确的吗?
      【解决方案3】:

      如果表中有单个列具有UNIQUE KEY 约束,则只需在注释@Column 中添加属性unique=true

      代码片段:

      @Column(name = "unique_key_field", nullable = false, unique = true)
      String uniqueKeyFied;
      

      如果您在表中有多个唯一键约束,那么您只需遵循JPA annotations,因为spring-boot-data-starter 不为表约束(KEY/UNIQUEKEY)提供任何特殊注释。

      代码片段:

      @Entity
      @Table(name = "table_name", uniqueConstraints={
                @UniqueConstraint( name = "idx_col1_col2",  columnNames ={"col1","col2"})
             })
      

      【讨论】:

        【解决方案4】:

        嗯,以 Kotlin 为例:

        Entity
        @Table(name = "TBL_XXX",
            uniqueConstraints = [
                    UniqueConstraint(name = "sessionid_uindex", columnNames = ["sessionId"])
            ]
        )
        data class XxxReturn(
            @Id
            @GeneratedValue(strategy = GenerationType.AUTO)
            @Column(name = "XXX_ID")
            var id: Long? = null,
        
            var sessionId: String,
        
            var msg: String
        )
        

        【讨论】:

          猜你喜欢
          • 2018-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-11
          • 2017-01-04
          • 1970-01-01
          • 2020-02-09
          相关资源
          最近更新 更多