迁移到 Wildfly 8.1 时的 Javax 验证异常

daj*_*jek 3 java migration validation wildfly

我收到以下异常:

javax.validation.ConstraintDeclarationException:HV000151:覆盖另一个方法的方法不得改变参数约束配置

在 Wildfly 8.1 服务器上部署我的应用程序时。该项目在以前的 JBoss 7.1 应用服务器上部署并运行良好。我需要更改代码还是配置有问题?

小智 7

如果向覆盖或实现超类型方法的方法添加参数约束,则会引发 javax.validation.ConstraintDeclarationException。此行为由 Bean 验证规范(请参阅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) {
    [...]
}
Run Code Online (Sandbox Code Playgroud)

}