簡體   English   中英

Spring Hibernate Bean驗證@valid

[英]Spring Hibernate Bean Validation @valid

我知道這在該論壇中不是新問題,但我很困惑該怎么辦。

問題:我正在使用Spring MVC + Hibernate開發一個應用程序。 對於服務器端驗證,我在控制器中使用@valid批注,在bean中使用@null和@notNull批注。

例如

public class User implements Serializable {

    private static final long serialVersionUID = 2158419746939747203L;

    @Id
    @Column(name="USER_ID")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long userId;

    @Column(name="USERNAME", unique = true)
    @NotEmpty @NotNull @Size(min=6, max=20)
    private String username;

    @Column(name="PASSWORD")
    @NotEmpty @NotNull @Size(min=6, max=20)
    private String password;

這種驗證進行得很好,數據也保存在DB中。

但是我想使用沒有任何驗證器類的注釋來驗證唯一約束,參照完整性和其他約束。

可能嗎? 如果沒有,那么什么是最好的和最簡單的方法(更少的編碼)呢? 如果框架能為我做到,我將不勝感激。

SAURABH,

對於表中的唯一約束,

 @Id

您還可以通過休眠注釋來強制引用完整性。

@OneToOne(mappedBy = "foo")

這是一個示例帖子

使用休眠一對一引用完整性

這是一個非常詳細的教程,也對此進行了探索:

http://www.journaldev.com/2882/hibernate-tutorial-for-beginners-using-xml-annotations-and-property-configurations

您可以像下面提到的那樣編寫一個“ CustomUniqueConstraintValidator”

http://www.journaldev.com/2668/spring-mvc-form-validation-example-using-annotation-and-custom-validator-implementation

您還可以將參數從注釋傳遞到自定義驗證器。 例如。

@CustomValidDate("columnName")

要創建適用於任何字段/列1的通用類。您可以編寫通用的自定義驗證器2.使用注釋參數(在每個類屬性上)傳入表名和列名。 3.然后,在驗證器中,您可以使用表名,列名來應用驗證邏輯(唯一性等)。

謝謝保羅

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM