当前位置: 首页 > 知识库问答 >
问题:

使用JPA和Hibernate时@size、@length和@column(length=value)之间的差异

赖杰
2023-03-14

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

@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-Validation。

那是正确的吗?我至今不明白的是:我什么时候必须用哪一个?这些注释中的一个何时触发?

编辑:考虑以下情况:给定开发具有长度为13的字符串类型字段的实体的需求。以上提到的方法你会选择哪一种?或者更好:你必须问自己哪些问题才能找出哪一个适合你的目的?

共有1个答案

璩无尘
2023-03-14
  1. @column是一个JPA注释,架构生成工具使用length属性设置关联的SQL列长度。
  2. @size是一个Bean验证注释,用于验证关联字符串是否具有长度由最小值和最大值限定的值。
  3. @length是特定于Hibernate的注释,其含义与@size
  4. 相同

因此2.3.都应该使用Bean验证来验证string长度。我会选择2.,因为它是泛型的。

 类似资料:
  • 问题内容: 以下三个字段的有效性检查之间有什么区别? 我读到第一个与DDL有关。第二个是用于bean验证的。第三是用于hibernate验证。 那是对的吗?我仍然不明白的是:我什么时候必须使用哪个?这些注释之一何时触发? 编辑:考虑以下情况:考虑到需要开发一个长度为string类型的字段(长度为13)的实体,您会选择上述哪种方法?甚至更好:您必须问自己哪些问题才能找出适合您目的的一个? 问题答案:

  • 问题内容: 好的,所以我有这段代码: 我的问题是,为什么是和不是。我以为得到你使用而不是数组的长度。您是否因为尝试获取字符串而不是数组的长度而使用?PS我是一个初学者,所以这对您来说似乎很明显,但对我而言却不是。 问题答案: 他们是两个完全不同的东西。 是 arrays 的属性。那不是方法调用。 是对的方法调用。 您看到了这两者,因为首先,您要遍历数组的长度。数组的内容是,并且您希望将它们的所有长

  • 问题内容: 我想做一些域验证 在我的对象中,我有一个整数, 现在我的问题是我是否写 和 如果是整数,则哪一个适合域验证。 有人可以解释一下两者之间的区别吗? 谢谢。 问题答案: 和用于验证数字字段,其可以被(代表数字), ,, 等和它们各自的原始包装。 用于检查字段的长度约束。 按照文档的支持,,和而和支持原语及其包装。请参阅文档。

  • 问题内容: 为什么要将数组的长度作为属性,而对于,我们有一个方法? 问题答案: 让我首先强调三种用于类似目的的不同方式。 - 阵列() -知道数组的长度 - 与字符串相关的对象(等)-了解字符串的长度 - 集合对象(等)-知道集合的大小 现在忘记考虑正义length和正义。 不是方法,因此完全无法在对象上使用是完全有意义的。它仅适用于数组。 它的名称更好地描述了它,并且因为它是一种方法,将在我上面

  • 本文向大家介绍jQuery length 和 size()区别总结,包括了jQuery length 和 size()区别总结的使用技巧和注意事项,需要的朋友参考一下 jQuery length和size()区别总结如下: 1.length是属性,size()是方法。 2.如果你只是想获取元素的个数,两者效果一样既 ("img").length和("img").length和("img").siz

  • 为什么123['toString'].length===1,[]['toString'].length===0