"A"、 "B"、 "C"の3つの列を持つ表があります。これらの列の2つ(AとB)は、表の複合主キーです。私はこのテーブル用のJavaクラスを作成しました。クラス内のデータをテーブル内のデータにマップするためにHibernateを使用しています。私は、埋め込み(つまりコンポジット)キー用に別のクラスを作成しました。Hibernate:EmbeddedIdsで複製されたゲッター/セッター?
2つのクラスは次のようになります。
@Entity
@Table(name="SOME_TABLE", schema="SOME_SCHEMA")
public class Outer {
private Key key;
private String a;
private String b;
private String c;
@EmbeddedId
public Key getId() {
return this.key;
}
// Also a setter for Key...
@Column(name="A")
public String getA() {
return this.a;
}
public void setA(final String a) {
this.a = a;
}
// Also setters and getters for B and C.
}
。
すべてのHibernateのドキュメントは、getterとsetterがどこに行かなければならないのかを詳しく説明しているようです。 OuterとKeyの両方にコンポジットキーを構成する値のセッターが必要ですか?私が両方の場所にセッターを持っている場合、Aの値をアウターに設定すると、Hibernateは正しいことを行います(つまり、Keyの値を設定します)? Outer.getA/B()とOuter.setA/B()はKeyクラスに従うべきですか?
同じデータに対して2つの場所にセッターを置くことは、コーディングが悪いと思います。少なくともあいまいです。私は、Hibernateが私のためにKeyクラスの値を設定することを望んでいますが、確かに知りたいです。ありがとう!
-joe
感謝、tscho。私はめったに@Embeddedを使用しないので、そこへの接続にはジャンプしませんでした。私は、私の元の質問に答えるために、 "キーへの委任"がアプローチだと思います。 – joemadeus