【发布时间】:2014-11-21 11:32:41
【问题描述】:
我收到以下异常:
javax.validation.ConstraintDeclarationException: HV000151: 覆盖另一个方法的方法不得更改参数约束配置
在 Wildfly 8.1 服务器上部署我的应用程序时。该项目在以前的 JBoss 7.1 应用服务器上部署并运行良好。我需要更改代码还是配置有问题?
【问题讨论】:
标签: java validation migration wildfly
我收到以下异常:
javax.validation.ConstraintDeclarationException: HV000151: 覆盖另一个方法的方法不得更改参数约束配置
在 Wildfly 8.1 服务器上部署我的应用程序时。该项目在以前的 JBoss 7.1 应用服务器上部署并运行良好。我需要更改代码还是配置有问题?
【问题讨论】:
标签: java validation migration wildfly
如果将参数约束添加到覆盖或实现超类型方法的方法,则会引发 javax.validation.ConstraintDeclarationException。此行为是 Bean Validation 规范(请参阅 http://beanvalidation.org/1.1/spec/#constraintdeclarationvalidationprocess-methodlevelconstraints-inheritance)强制要求的,以遵守 Liskov 替换原则:
例如下面的代码非法声明子类的参数约束,它会抛出上面的异常:
public class OrderService {
void placeOrder(String customerCode, Item item, int quantity) { [...] }
}
public class SimpleOrderService extends OrderService {
@Override
public void placeOrder(
@NotNull @Size(min=3, max=20) String customerCode,
@NotNull Item item,
@Min(1) int quantity) {
[...]
}
}
【讨论】:
我在我的spring boot项目中遇到了同样的问题,你应该将覆盖方法中使用的验证注释移动到超类或接口中。
【讨论】:
我找不到任何配置来帮助解决这个问题,所以我从实现类中删除了参数约束,从而解决了这个问题。
【讨论】: