当前位置:  开发笔记 > 编程语言 > 正文

使用JPA和Hibernate时@Size,@ Longth和@Column(length = value)之间的差异

如何解决《使用JPA和Hibernate时@Size,@Longth和@Column(length=value)之间的差异》经验,为你挑选了1个好方法。

以下三个字段的验证检查有什么区别?

@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验证.第三个是用于休眠验证.

那是对的吗?我还不明白的是:我什么时候需要使用哪一个?这些注释中的一个何时触发?

编辑:考虑以下情况:鉴于需要开发一个具有长度为13的字符串类型字段的实体.您会选择上述哪种方法?甚至更好:你有什么问题要问自己找出哪一个适合你的目的?



1> Vlad Mihalce..:

    @Column是JPA注释,length模式生成工具使用该属性来设置关联的SQL列长度.

    @Size 是一个Bean Validation批注,用于验证关联的String是否具有长度受最小值和最大值限制的值.

    @Length 是一个特定于Hibernate的注释,具有与之相同的含义 @Size

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


`@ Size`是__not__一个JPA注释.它是Bean Validation API注释!也可以更好地说`@ Column`是JPA注释,供JPA提供者在模式生成中使用(仅限),因为它可供所有JPA提供者使用.
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有