我收到以下异常:
javax.validation.ConstraintDeclarationException:HV000151:重写另一个方法的方法不得更改参数约束配置
在Wildfly 8.1服务器上部署我的应用程序时。该项目正在以前的JBoss 7.1应用服务器上部署并运行良好。我是否需要更改代码或配置有问题?
如果将参数约束添加到覆盖或实现超类型方法的方法,则会引发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) {
[...]
}
}
我找不到任何配置来帮助解决这个问题所以我从实现类中删除了参数约束,从而解决了这个问题。