一尘不染

使用JPA和Hibernate时@ Size,@ Length和@Column(length = value)之间的区别

hibernate

以下三个字段的有效性检查之间有什么区别?

@Entity
public class MyEntity {

    @Column(name = "MY_FIELD_1", length=13)
    private String myField1;
    @Column(name = "MY_FIELD_2")
    @Size(min = 13, max = 13)
    private String myField2;
    @Column(name = "MY_FIELD_3")
    @Length(min = 13, max = 13)
    private String myField3;

    // getter & setter

}

我读到第一个与DDL有关。第二个是用于bean验证的。第三是用于hibernate验证。

那是对的吗?我仍然不明白的是:我什么时候必须使用哪个?这些注释之一何时触发?

编辑:考虑以下情况:考虑到需要开发一个长度为string类型的字段(长度为13)的实体,您会选择上述哪种方法?甚至更好:您必须问自己哪些问题才能找出适合您目的的一个?


阅读 1183

收藏
2020-06-20

共1个答案

一尘不染

  1. @Column是JPA批注,length模式生成工具使用该属性来设置关联的SQL列长度。
  2. @Size 是一个Bean验证批注,它验证关联的String具有一个值,该值的长度受最小值和最大值限制。
  3. @Length 是特定于Hibernate的注释,其含义与 @Size

因此,无论2.并且3.应该验证String使用Bean验证长度。我选择2.它是因为它是通用的。

2020-06-20