是否可以进行此验证:
class Man {
@Unique
String name;
}
class Order {
@Valid
List<Man> manCollection;
}
其中唯一逻辑是:集合manCollection中的每个项都是唯一的。
答案 0 :(得分:0)
您可以通过添加包含订单列表的Customer类来使此代码段不明确:
class Man {
@Unique
String name;
}
class Order {
@Valid
List<Man> manCollection;
}
class Customer {
@Valid
List<Order> orderCollection;
}
然后,人们无法知道Man
对象在给定订单内或给定客户(或两者)内是否必须是唯一的。
因此,无论Bean Validation API允许什么,我都不会认为使用这种确切的语法是可能的。
您可以做的是将注释移至manCollection
,例如@UniqueMen List<Man> manCollection;
,并实施ConstraintValidator<List<Man>>
。
如果它对您有用,您甚至可以制作更通用的@UniqueContent
注释,但这会复杂得多。您需要将目标类型作为参数(@UniqueContent(target = Man.class)
)传递,并编写一个验证程序,用于解析target
方法中initialize
类的注释。但是要小心使用一些缓存机制,因为注释解析非常慢。