我们从HV 4.x升级到HV 5.4.2,现在我们有了如下界面
@NotNull
List<AccountInfo> getMultiClientAccountBalances(@NotNull ClientContext clientContext, @NotNull Optional<AccountFilter> accountFilter);
我收到错误:
javax.validation.UnexpectedTypeException: HV000186: The constraint of type 'javax.validation.constraints.NotNull' defined on 'getMultiClientAccountBalances.arg1' has multiple matching constraint validators which is due to an additional value handler of type 'org.hibernate.validator.internal.engine.valuehandling.OptionalValueUnwrapper'. It is unclear which value needs validating. Clarify configuration via @UnwrapValidatedValue.
我知道可以通过向字段添加@UnwrapValidatedValue
来修复它,但必须将其添加到每个方法中,这对我来说有很多工作要做。有没有更简单的解决方案(除了升级到HV6.x)
答案 0 :(得分:1)
不幸的是,我没有看到如何在不破坏其他用例的情况下改变5.4中的这种行为。
并且没有简单的方法来禁用可选值处理程序,因为它是无条件添加的。
所以我会说你有两个解决方案:
1.问题是我们从HV中删除了这个注释(它是实验性的),支持Bean Validation中包含的标准功能,因此在移动到6时必须将其删除。
我不知道您的确切环境,但HV 6与之前的版本高度兼容,因此它可能非常有效。当我们将工件的groupId从org.hibernate更改为org.hibernate.validator时,请注意依赖关系。另请注意,您需要将validation-api从1.1更新为2.0。
6已经非常稳定了,如果您有任何问题,我们会马上修复它们。