は、私はいくつかのメンバーを持つクラスを持って、そして関連するセッターとゲッター:メンバが埋め込まれたクラスを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フィールドを保存するのは間違っていますか?