2012-10-04 64 views
0

指定组我确认其具有多于一个的关系,以特定类型的bean对象时但每个关系必须以不同的方式进行验证面临的问题。 复合类:Jsr303上关联的验证

public class Composite{ 
    @Valid 
    private Person insurer; 
    @Valid 
    private Person insured; 
    ...(other properties) 
    private String foo; 
} 

Person类:

因此,我们有一个单一类型的人可以代表保险公司和保险。问题是,当验证复合我想要保险公司财产与保险集团进行验证,并与被保险人保险。是否有反正它可以完成,或者我需要等待https://hibernate.onjira.com/browse/BVAL-208解决...

回答

0

要以标准化的方式解决您的问题,您实际上必须等待Bean验证1.1,它将解决BVAL-208(组翻译)。

如果您的类也有一个标志或一些其他标准,您可以使用它来确定此人是否为保险公司或被保险人,您也可以使用自定义的级别限制。缺点是你失去了一些注释的表现力,因为你必须在自定义约束验证器实现中自己做所有的验证。

另一种方法(同样需要有一种方式的保险公司和保险之间的区别)是使用Hibernate的验证具体GroupSequenceProvider。通过这种方式,您可以保留当前配置,并根据人员的类型返回正确的组。

+0

thx为答案。其实这些解决方法都不是很好。我可以介绍一些短暂的“保险/保险人”标志,但我最终对保险公司/保险财产进行了手动验证,两者都是复合的,验证复合,合并(带前缀)保险公司/保险和综合违规。 – user62058