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

时间:2012-12-21 14:26:19

标签: java hibernate validation annotations hibernate-mapping

我有一个具有电子邮件收集属性的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;
    }
}

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

1 个答案:

答案 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