2012-10-04 62 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