我有一个具有电子邮件收集属性的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;
}
}
但它不起作用。我的方法应该是什么?
答案 0 :(得分:13)
向集合属性添加@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