当返回类型使用@NotEmpty时,hibernate验证器错误
this是我的示例应用程序,它的test。我已将repository定义为@NotEmpty
。当我想打电话给这个仓库我得到以下问题当返回类型使用@NotEmpty时,hibernate验证器错误
javax.validation.ConstraintDeclarationException: HV000141: The constraint org.hibernate.validator.constraints.NotEmpty used ConstraintTarget#IMPLICIT where the target cannot be inferred.
我是否需要实施验证了@NotEmpty
或者这是一个bug处于休眠或我的春天启动的应用程序?
note当我从返回类型中删除@NotEmpty
,它的工作原理。
您正在运行到一个有趣的角落情况下在这里,其中用于纯粹由约束不能确定是否适用于参数或方法的返回值。早在Bean Validation 1.1 we decided的时候,就把它留给实现来处理这种情况,因为它非常罕见。
Hibernate Validator允许在约束定义上解决此案例by specifying@SupportedValidationTarget(ValidationTarget.ANNOTATED_ELEMENT)
。这是在HV 5.2中添加的,但是似乎我们忘记了将它用于@NotEmpty
以及由HV定义的其他可能的纯粹约束约束。请问您能否在我们的JIRA instance中提交错误报告?
请注意,您应该没有在Bean Validation 2.0(HV 6.0)中定义的@NotEmpty
问题,因为它没有被声明为纯粹的约束条件。
更新:此问题已在Hibernate Validator 6.0.3.Final中修复(并且已移植到5.3.6.Final和5.4.2.Final)。
你可以带回这里的代码,它使问题更容易阅读(测试和回购)。 – 2017-10-13 14:27:36
它似乎是HV中的一个bug,因为5.3和5.4都似乎缺少NotEmpty验证器实现。如果你想像你的例子那样在字符串上使用它,你可能会考虑'@ NotBlank' - 如果约束符合你的需求,这个应该可以正常工作。或者我也建议升级到Hibernate Validator 6.0。这是最新版本,有很多改进。 (但在6.0的情况下,你需要在你的配置上做一些修改,尽管...) –
实际上,更多地考虑这点 - 来自HV的'@ NotEmpty'约束是一个复合约束,并且它没有Validator实现,因为它应该是使用Size和NotNull验证器的组合。这就是导致这个问题的原因(所以仍然看起来像一个错误,但稍有不同,比我在前面的评论中说的...) –