【发布时间】:2016-02-29 13:25:08
【问题描述】:
我是休眠验证器的新手
我想要一个注释和多个实现。问题是,该注释应该放在域(api)模块中,并在相应的实现模块(xx-command,xx-query)中实现。所以@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 {};
}
这是我的项目结构(按依赖顺序,accessor-command 取决于 accessor-query,accessor-query 取决于 infrastrucutre ...)
-api
-基础设施
-访问者查询
-accessor-command
我发现this 问题并想使用xml 配置(请参阅答案中的编辑部分),但这没有帮助,因为我想在许多模块中使用实现>>> 如提到的here
一个给定的实体只能在所有配置文件中配置一次。这同样适用于给定约束注释的约束定义。它只能出现在一个映射文件中。如果违反了这些规则,则会抛出 ValidationException。
所以我不能将约束拆分为多个 xml 配置。
此验证器的基本需求是查看存储库并验证指定对象是否已存在。我也在我的项目中使用 spring,所以如果有人有更好的方法来做到这一点(即使使用 spring 或其他框架),它将受到欢迎。
谢谢
【问题讨论】:
标签: java spring hibernate validation hibernate-validator