使用JPA和Hibernate时@Size,@ Longth和@Column(length = value)之间的区别
以下三个字段的validation检查有什么区别?
@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的东西有关。 第二个是beanvalidation。 第三个是用于hibernatevalidation。
那是对的吗? 我还不明白的是:我什么时候需要使用哪一个? 这些注释中的一个何时触发?
编辑:考虑以下情况:鉴于需要开发一个具有长度为13的字符串类型字段的实体。您会选择上述哪种方法? 甚至更好:你有哪些问题要问自己找出哪一个适合你的目的?
-
@Column
是JPA注释,模式生成工具使用length
属性来设置关联的SQL列长度。 -
@Size
是一个Bean Validation批注,用于validation关联的String是否具有长度以最小值和最大值为界的值。 -
@Length
是一个特定于Hibernate的注释,与@Size
具有相同的含义
所以2.和3.都应该使用Bean Validationvalidation字符串长度。 我选择2.因为它是通用的。
- 如何在hibernate中使用属性文件读取数据库配置参数
- Hibernate命名查询是否是真正意义上的预编译?
- Hibernate java.lang.OutOfMemoryError:Java堆空间
- Hibernate为每个查询生成不同的SQL
- Spring + Hibernate + JPA
- 创建一个可以处理所有类型的CRUD操作的类。 每次我需要做CRUD时都不需要创建SessionFactory或Session对象
- Spring-boot – 将hibernate映射文件添加到实体管理器
- 在Spring 3之前注入Hibernate会话的最佳方法
- Java SE + Spring Data + Hibernate