質問

「A」、「B」、「C」という3つの列があるテーブルがあります。これらの列のうち2つ(AとB)は、テーブルの複合プライマリキーです。このテーブルのJavaクラスを書きましたが、クラスのデータをテーブルのデータにマッピングするためにHibernateを使用しています。埋め込み(つまり、複合)キーの別のクラスを作成しました。

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.
}

.

@Embeddable
public class Key {
    private String a;
    private String b;

    @Column(name="A")
    public String getA() {
        return this.a;
    }

    public void setA(final String a) {
        this.a = a;
    }

    // Also a getter & setter for B.
}

すべてのHibernateのドキュメントが、正確に、GettersとSetterが行くべき場所を光沢があるようです。アウターとキーの両方に、複合キーを構成する値のセッターが必要ですか?両方の場所にセッターがある場合、hibernateは正しいことをします(つまり、キーに値を設定します)。 outer.geta/b()およびouter.seta/b()はキークラスに延期する必要がありますか?

同じデータの2つの場所にセッターを持つことは、コーディングの練習が悪いと思います。少なくとも曖昧です。 Hibernateが私のために重要なクラスに値を設定することを望んでいますが、私は確かに知りたいです。ありがとう!

- ジョー

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top