我有一个带有电子邮件收集属性的 Person 实体:
@ElementCollection
@CollectionTable(schema="u",name="emails",joinColumns=@JoinColumn(name="person_fk"))
@AttributeOverrides({
@AttributeOverride(name="email",column=@Column(name="email",nullable=false)),
})
public List<EmailU> getEmails() {
return emails;
}
在我的电子邮件类中,我尝试使用@Email 注释电子邮件:
@Embeddable
public class EmailU implements Serializable {
private String email;
public EmailU(){
}
@Email
public String getEmail() {
return email;
}
}
但它不起作用。我的方法应该是什么?
最佳答案
将 @Valid
注释添加到您的集合属性。这会触发您的验证提供程序验证集合中的每个项目,然后调用您的 @Email
验证程序。
@Valid
@ElementCollection
@CollectionTable(schema="u",name="emails",joinColumns=@JoinColumn(name="person_fk"))
@AttributeOverrides({
@AttributeOverride(name="email",column=@Column(name="email",nullable=false)),
})
public List<EmailU> getEmails() {
return emails;
}
注释文档:http://docs.oracle.com/javaee/6/api/javax/validation/Valid.html
关于java - 如何对可嵌入实体属性实现验证约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991906/