0

は、私はいくつかのメンバーを持つクラスを持って、そして関連するセッターとゲッター:メンバが埋め込まれたクラスをRestTemplateでPOSTするにはどうすればよいですか?

Tester trythis = new Tester(); 
    trythis.setName("Herewe"); 
    trythis.setValue("wow1"); 
    Tester jnode = restTemplate.postForObject(TestBase.URL + "tester/", trythis, Tester.class); 

これは期待通りに動作します:JUnitので

public class Tester implements Serializable { 
    @Column(name="ID", nullable=false, unique=true) 
    @Id 
    @GeneratedValue(generator="LOCATION_FACILITYTYPE_ID_GENERATOR") 
    @org.hibernate.annotations.GenericGenerator(name="LOCATION_FACILITYTYPE_ID_GENERATOR", strategy="native") 
    private int ID; 

    @Column(name="Value", nullable=false, unique=true, length=4) 
    private String value; 

    @Column(name="Name", nullable=false, unique=true, length=8) 
    private String name; 

    @ManyToOne(targetEntity=location.FacilityType.class, fetch=FetchType.LAZY)  
    @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.LOCK}) 
    @JoinColumns({ @JoinColumn(name="FacilityTypeID", referencedColumnName="ID", nullable=false) }) 
    private location.FacilityType facility; 

は、私はテスターの要素を作成し、テストしようとしています。私は埋め込み部材含めるには、このようなコードを使用する場合は、:

FacilityType ft = new FacilityType();  
    ft.setValue("AL"); 
    ft.setName("2adamlec"); 
    Tester trythis = new Tester(); 
    trythis.setName("Herewe"); 
    trythis.setValue("wow1"); 
    trythis.setFacility(ft); 
    Tester jnode = restTemplate.postForObject(TestBase.URL + "tester/", trythis, Tester.class); 

値を持つ埋め込み部材は= ALがまだデータベースに表示されない、私はまだテスターテーブルで作成された新しい行を取得します.. Testerのvalue列とname列には、FacilityTypeに定義された値(ALと2adamlec)が入ります。

FacilityTypeとTesterにJPARepositoryフレームワークを使用しています。したがって、CRUD関数は 'カバーの下で'扱われ、POST処理をデバッグすることはできません。これは、TesterデータのGETは、FacilityTypeに定義された投影がないため、JSON応答のプリミティブフィールドのみを返すという事実と関連しているのだろうかと思います。

Testerテーブルの目的のテスターフィールドの代わりにFacilityTypeフィールドを保存するのは間違っていますか?

答えて

0

簡単な答え:アイテムを作成するときは、サーバーが期待するのと同じJSON形式でデータを提供する必要があります。クラスが埋め込まれている場合は、ファシリティメンバーがURLを格納するStringであるクラスを作成し、そのメンバーを埋め込みクラスの既存のインスタンスに対応するURLに設定する必要があります。あなたが埋め込まれたクラスのインスタンスへのリンクを取得するにはJsonNodeを下に移動することができ

public class FMT_Tester_RCV { 
    public FMT_Tester_RCV() { } 

    private String value; 
    private String name; 
    private Integer id; 
    private Integer ormid; 
    private JsonNode _links; 

:受信側で、あなたもこのような新しいクラスが必要です。

関連する問題