2016-02-29 52 views
1

我是新來休眠驗證器JSR303休眠動態驗證器

我想有一個註釋和許多實現。問題是,該註釋應該放置在相應的實現模塊(xx-command,xx-query)中的domain(api)模塊和實現中。所以@Constraint註釋的參數validatedBy必須爲空。
我可以動態地告訴休眠使用指定註釋的所有實現,它可以傳遞我需要的類型。另外我想在多個子模塊中實現。

@Target({FIELD, PARAMETER}) 
@Retention(RUNTIME) 
@Documented 
@Constraint(validatedBy = {}) 
public @interface CanNotExists { 

    String message() default "com.foo.api.domain.validation.annotation.CanNotExists.message"; 

    Class<?>[] groups() default {}; 

    Class<? extends Payload>[] payload() default {}; 
} 

這是我的項目結構(以依賴順序訪問命令取決於訪問查詢,在infrastrucutre訪問查詢dependes ...)
-API
-infrastructure
-accessor查詢
-accessor命令

我發現this問題,並希望使用XML配置(見在回答編輯部分),但它沒有幫助,因爲我想用在執行許多模塊>>>提到here

給定實體只能在所有配置文件中配置一次。給定約束註釋的約束定義也是如此。它只能出現在一個映射文件中。如果違反這些規則,則拋出ValidationException。

所以我不能將約束分割爲多個xml配置。

此驗證程序的基本需求是查看存儲庫並驗證指定對象是否已存在。我也在我的項目中使用spring,所以如果有人有更好的方法如何做到這一點(即使是春季或其他框架),這將是受歡迎的。

感謝

回答

0

你的問題被打上「春天」,所以可能是你可以使用彈簧驗證發動機罩下使用Hibernate:

[spring validation][1] 

讓你的驗證器實現的接口春天驗證,創建它的一顆豆子,就是這樣。