2016-05-15 5 views
0

人はエンティティですが、これは有効ですが、なぜバリデータがこれをワリドイドとは言いませんか?検証ツールで 'nama'がnullです。サービス結果のオブジェクトは常に有効ではありません

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); 

何が違うのですか?サービス結果に何が問題なのですか?

EDITED: これは私の人々エンティティ

@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; 
    } 
} 

であり、これは第2のケースでデータ

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

あなたに「People」エンティティを表示できますか?私は最初の例は動作しているのに対し、2番目の例は動作しないと仮定します。 – Alex

+0

私の推測では、サービスから戻ってきたPeopleオブジェクトは、2番目のコード例で作成したPeopleオブジェクトとは異なり、サービスのPeopleオブジェクトは不変であるため、サービス外の名前を設定することはできません。 – hooknc

+1

実行時に両方の 'orang'変数が内部でどのように見えるかをデバッガで見てください。 – Alex

答えて

0

を取得するためのpeopleService方法で、オランウータンは(新しい人々を使用して作成)が異なります最初のケースから。しかし、問題は検証ロジックにあるようです。 Validatorを拡張するカスタムバリデーターはありますか?その場合、Peopleオブジェクトでバリデータロジックをチェックするか、PeopleオブジェクトとValidatorロジックをポストします。

+0

うん、検証の問題。そして私はカスタムバリデーターを使用しませんでした。 –

関連する問題