@Size,@Length和@Column(length = value)之間的區別


來源

以下三個字段的驗證檢查有什么區別?

@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驗證.

那是對的嗎?我還不明白的是:何時需要使用哪一個?什么時候觸發這些注釋之一?

編輯:想想以下情況:
考慮到要開發一個具有長度為13的字符串類型的實體.您會選擇上述哪種方法?甚至更好:你有什么問題要問自己找出哪一個適合你的目的?

> @Column是一個JPA注釋,並且length屬性由模式生成工具用於設置關聯的SQL列長度.
> [@Size](javascript:void())是一個Bean驗證注釋,用於驗證關聯的String具有的長度受最小值和最大值限制的值.
> [@Length](javascript:void())是一個Hibernate特定的注釋,與@Size具有相同的含義

所以2.和3.應該使用Bean驗證來驗證String的長度.我會選擇2.因為它是通用的.

本人注:@length和@size實際使用時的區別

​ 用@length限制長度為100,@length驗證的應該為100個字符的長度,如99個漢字+2個數字,@length並不會報錯;

​ 但用@size限制長度為100,同樣情況下則會報錯,即超出限制長度

​ 綜上,@length限制長度為字符長度,@size限制長度為個數長度,@size為限制長度通用格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM