9

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

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

4

1 回答 1

15

向您的集合属性添加@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

于 2012-12-21T15:37:01.960 回答