假设我有一个班级,Address
它是两个班级的孩子。在 的情况下,企业只真正关心需要的地址的城市字段(联系人更多的是关于人的姓名和电话以及他们的位置 - 城市)。而对于可能从我们这里收到纸质邮件的人,我们需要完整的地址信息,因此Line1、City、State/Province、Country、PostalCode/Zip都是必需的。Contact
Vendor
Contact
Vendor
我的想法是创建一个在CityContactAddress
字段上使用的子类,然后创建一个用. @NotBlank
VendorAddress
@NotBlank
我只是不确定这是最好的方法(它使我的域对象和 Hibernate 映射复杂化)。有没有人提示正确的模式?
编辑:更多细节
public class Contact {
private Address address;
}
public class Vendor {
private Address address;
}
public class Address {
private String line1;
@NotBlank
private String city;
private String state;
private String country;
private String postalCode;
}
Address
然后,只能@NotBlank
在City上使用,因为并非所有使用 Address 都需要其他字段。
我还应该说,我想在 JSF 中使用这些类(除了在我的服务层中手动调用它之外,它还可以进行“免费验证”)。这是一个“传统的”JSF/Spring/Hibernate 应用程序。
也许我想使用http://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html_single/#chapter-groups?不确定这如何与 JSF 的“免费”验证交互