0

我在数据库中有一个长度为 512 的列。它将包含多个用“;”分隔的电子邮件地址。如何在实体中验证其各自的变量,以便所有电子邮件地址都有效。

列表将不起作用,因为我需要将其保留在列中。这是数据:

@Basic
@Column(name = "CC_EMAIL_ADDRESS", nullable = true, length = 512)
private String emailCC;
4

5 回答 5

0

这种方式我在我的项目中使用成功

@NotEmpty
@Email
@Size(max = 255)
@Column(unique = true)
private String email;


@PrePersist
@PreUpdate
private void prepareData(){
    this.email = email == null ? null : email.toLowerCase();
}
于 2019-10-22T16:43:26.690 回答
0

使用javax.validation图书馆。如果在您设置尝试持久化时验证失败,这将引发验证异常email,或者您可以以 . 开头进行手动验证ValidatorFactory

@NotNull(message="{email.required}")
@Pattern(regexp = "[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\."
        + "[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@"
        + "(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.)+[A-Za-z0-9]"
        + "(?:[A-Za-z0-9-]*[A-Za-z0-9])?",
        message = "{invalid.email}")
private String email;
于 2019-05-03T05:52:51.067 回答
0

使用验证和正则表达式:

@Basic
@Pattern(regexp = "\\w+@\\w+\\.\\w+(,\\s*\\w+@\\w+\\.\\w+)*")
@Column(name = "CC_EMAIL_ADDRESS", nullable = true, length = 512)
于 2019-05-03T05:28:35.967 回答
0

您可以在实体中使用 @PrePersist 回调事件来验证电子邮件,然后再将其保存到数据库。

@PrePersist
public void validateEmails(){
    //Validate Here
}

或者您可以在您的实体中创建一个 setter 方法并在 setter 方法中验证数据。

于 2019-05-03T05:06:54.953 回答
0

您可以创建自定义约束

@MyCustomConstraint
private String emailCC;

@MyCustomConstraint您的新注释将在哪里。

于 2019-05-03T05:24:12.073 回答