Как проверить строку электронной почты в сущности JPA - PullRequest
0 голосов
/ 03 мая 2019

У меня есть столбец в базе данных длиной 512. Он будет содержать несколько адресов электронной почты, разделенных ";". Как я могу проверить соответствующую переменную в сущности, чтобы все адреса электронной почты были действительными.

Список не будет работать, так как мне нужно сохранить его в столбце. Вот данные:

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

Ответы [ 4 ]

0 голосов
/ 03 мая 2019

Используйте библиотеку 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;
0 голосов
/ 03 мая 2019

Вы можете создать пользовательское ограничение .

@MyCustomConstraint
private String emailCC;

, где @MyCustomConstraint будет вашей новой аннотацией.

0 голосов
/ 03 мая 2019

Использовать проверку и регулярное выражение:

@Basic
@Pattern(regexp = "\\w+@\\w+\\.\\w+(,\\s*\\w+@\\w+\\.\\w+)*")
@Column(name = "CC_EMAIL_ADDRESS", nullable = true, length = 512)
0 голосов
/ 03 мая 2019

Вы можете использовать событие обратного вызова @PrePersist в своей сущности для проверки электронной почты перед ее сохранением в базе данных.

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

Или вы можете создать метод установки в вашей сущности и проверить данные в методе установки.

...