java - 如何对可嵌入实体属性实现验证约束?

标签 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;
    }
}

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

最佳答案

@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/

相关文章:

java - 深层对象图 hibernate

java - failed.org.hibernate.exception.JDBCConnectionException : Error calling Driver#connect with PostGres Hibernate

php - Yii 防止客户端验证表单提交

java - Dropwizard bean 验证不起作用

JavaFX标签不会持续更新

java - 使用扩展类的泛型

Java解析DateTime并忽略时区

c# - 列表验证(数据注释)在客户端不起作用

java - 将 JNI Java byte[] 转换为 C++ bytearray,返回 0

java - 为什么我的 Java SSL 证书会出现 handshake_failure?