2016-05-15 57 views
0

人是實體,我認爲這是有效的,但爲什麼驗證者說這不是walid?驗證器說'nama'爲空。服務對象結果總是無效

People orang = peopleService.get(id); 
orang.setNama("Nama Baru"); 
Set<ConstraintViolation<People>> violations = validator.validate(orang); 

必須這樣。

People tmp = peopleService.get(id); 
People orang = new People(); 
orang.setId(id); 
orang.setNama("Nama Baru"); 
orang.setJenkel(tmp.getJenkel()); 
orang.setAlamat(tmp.getAlamat()); 
Set<ConstraintViolation<People>> violations = validator.validate(orang); 

有什麼不同?服務結果有什麼問題?

編輯: 這是我的人類實體

@Entity 
public class People implements Serializable { 

    @Id 
    @GeneratedValue(generator = "uuid") 
    @GenericGenerator(name = "uuid", strategy = "uuid2") 
    private String id; 

    @NotNull(message = "Jangan biarkan null") 
    @Size(min = 3, message = "Panjang nama minimal 3 karakter") 
    private String nama; 

    @NotNull(message = "Jangan biarkan null") 
    private String jenkel; 

    private String alamat; 


    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getNama() { 
     return nama; 
    } 

    public void setNama(String nama) { 
     this.nama = nama; 
    } 

    public String getJenkel() { 
     return jenkel; 
    } 

    public void setJenkel(String jenkel) { 
     this.jenkel = jenkel; 
    } 

    public String getAlamat() { 
     return alamat; 
    } 

    public void setAlamat(String alamat) { 
     this.alamat = alamat; 
    } 
} 

這是peopleService方法獲取數據

@Override 
public People get(String id) 
{ 
    return peopleRepository.getOne(id); 
} 
+1

您可以向您展示'People' Entity嗎?我假設第一個例子有效,而第二個例子不是? – Alex

+0

我的猜測是,從服務返回的People對象與您在第二個代碼示例中創建的People對象不同,並且服務中的People對象是不可變的,因此您很可能無法在服務外設置該名稱。 – hooknc

+1

用調試器看一下在運行時,兩個'orang'變量看起來像什麼樣子。 – Alex

回答

0

在第二種情況下,紅毛使用新人們(),這是不同的創建從第一個案件。但是,這個問題似乎在驗證邏輯中。你有沒有擴展Validator的自定義驗證器?如果是這樣,請使用People對象檢查驗證器邏輯,或者發佈People對象和驗證器邏輯。

+0

是的,驗證中的問題。我沒有使用自定義驗證器。 –