0

作爲我使用Spring Boot構建的網站的一部分,我通過Thymeleaf窗體接收輸入。爲了驗證輸入我創建了一個類並註明其字段:使用驗證器與數據庫中未保留的類

package com.bank.domain; 

import java.util.Date; 
import javax.persistence.Column; 
import javax.validation.constraints.Digits; 
import javax.validation.constraints.NotNull; 
import javax.validation.constraints.Size; 

import lombok.Data; 
import lombok.NoArgsConstructor; 

@Data 
@NoArgsConstructor 
public class NewClass { 

    //if record is active/inactive (hidden) 
    @Column 
    private boolean active=true; 

    //bank of account holder 
    @NotNull 
    @Size(min = 2, max =3) 
    private String banknum; 

    //branch 
    @NotNull 
    @Size(min = 1, max =3) 
    private String branchnum; 

    // account number 
    @NotNull 
    @Size(min = 4, max =10) 
    private String accountnum; 

    // number/range of numbers of Check 
    @NotNull 
    @Digits(integer=9, fraction=0) 
    @Column(columnDefinition = "UNSIGNED INT(9) not null",nullable=false) 
    private String fromchecknum; 

    // number/range of numbers of Check 
    @NotNull 
    @Digits(integer=9, fraction=0) 
    @Column(columnDefinition = "UNSIGNED INT(9) not null",nullable=false) 
    private String tochecknum; 
} 

,因爲我已經調試打開,我看到在轉儲到日誌SQL輸出,即使沒有表這一類的數據庫。 我不想浪費資源在SQL查詢或任何他們是,因爲沒有基礎表,只是一個具有驗證器的字段的類。

所以我的問題是 - 是否有可能只使用一個普通班,也採用各種註釋,如@Size@Min@NotNull@Digits等?

+1

爲什麼你有'@ Column'註釋如果它沒有被保存? – holmis83

+1

請檢查https://stackoverflow.com/a/12149331/3530898 –

+0

@ holmis83是問題的一部分.-。如果它確定只刪除這些註釋,仍然使用驗證註釋(雖然我不堅持數據庫) – Dror

回答

1

看看你的班級,似乎使用@Column是處理持久性的唯一方法。你想要這個註釋嗎?如果您查看包結構,@column就是持久性包,驗證相關注釋位於javax.validation中,而不是駐留包中。 即使你的bean不是@Entity,也可以使用Bean驗證(JSR303),如@NotNull等。我認爲那是你的問題,對吧?

+0

所以,只需要刪除@column並使用JSR303庫,我仍然可以使用驗證而無需持續的開銷? 謝謝,我會給這個嘗試... – Dror

+0

@Dror我想是的,你應該。讓我們知道你是否遇到任何問題 – Atul