如何对Embeddable实体属性强制执行验证约束?

ftk*_*tkg 8 java validation annotations hibernate hibernate-mapping

我有一个带有Email集合属性的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;
}
Run Code Online (Sandbox Code Playgroud)

在我的Email类中,我尝试使用@Email注释电子邮件:

@Embeddable
public class EmailU implements Serializable {
    private String email;

    public EmailU(){
    }

    @Email
    public String getEmail() {
        return email;
    }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我的方法应该是什么?

Per*_*ion 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;
}
Run Code Online (Sandbox Code Playgroud)

注释文档:http://docs.oracle.com/javaee/6/api/javax/validation/Valid.html