簡體   English   中英

如何在JPA實體中驗證電子郵件字符串

[英]How to validate String of Email in JPA entity

我在數據庫中的長度為512列。它將包含多個用“;”分隔的電子郵件地址。 如何在實體中驗證其各自的變量,以便所有電子郵件地址均有效。

列表將不起作用,因為我需要將其保留在該列中。 數據如下:

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

您可以在實體中使用@PrePersist回調事件對電子郵件進行驗證,然后再將其保存到數據庫中。

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

或者,您可以在實體中創建setter方法,然后使用setter方法驗證數據。

您可以創建一個自定義約束

@MyCustomConstraint
private String emailCC;

其中@MyCustomConstraint將是您的新注釋。

使用經過驗證和正則表達式:

@Basic
@Pattern(regexp = "\\w+@\\w+\\.\\w+(,\\s*\\w+@\\w+\\.\\w+)*")
@Column(name = "CC_EMAIL_ADDRESS", nullable = true, length = 512)

使用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;

這樣我在項目中成功使用

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


@PrePersist
@PreUpdate
private void prepareData(){
    this.email = email == null ? null : email.toLowerCase();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM