5

あるドキュメントのシリーズと番号 (文字列と整数) という 1 つの共通機能があるとします。私のオブジェクト (保険証券) には、異なるドキュメントのシリーズと数に関する情報が含まれているため、このシリーズと数を 1 つの Java オブジェクトにグループ化し、休止状態で各オブジェクトの 2 つのフィールドを同じテーブルに格納できるようにします。

例を参照してください。

    class Polis {
        private DocInfo kaskoNumber;
        private DocInfo osagoNumber;
        private DocInfo tsNumber;
    }
    class DocInfo {
        private String series;
        private Integer number;
    }
    table:
    polis(kaskoSeries varchar2, 
          kaskoNumber numeric, 
          osagoSeries varchar2, 
          osagoNumber numeric..... )

このようなもの。私が本当にやりたいこと - Polis オブジェクトのフィールドの重複を取り除き、DocInfo オブジェクトのシリーズと数値フィールドをカプセル化することです。これはJavaでは問題ありませんが、Hibernateに関して私が知っている唯一の方法は、ManyToOne関係を作成し、この情報を他のテーブル(doc_info)に移動することです。しかし、すべての情報を 1 つのテーブルに保持する必要があります。

ありがとう。

4

2 に答える 2

10

使用@Embeddable@AttributeOverrides

@Entity
class Polis {
    @AttributeOverrides( {
        @AttributeOverride(name="series", column = @Column(name="kaskoSeries") ),
        @AttributeOverride(name="number", column = @Column(name="kaskoNumber") )
    })
    private DocInfo kaskoNumber;

    @AttributeOverrides( {
        @AttributeOverride(name="series", column = @Column(name="osagoSeries") ),
        @AttributeOverride(name="number", column = @Column(name="osagoNumber") )
    })
    private DocInfo osagoNumber;
    ...
}

@Embeddable
class DocInfo {
    private String series;
    private Integer number;
}

参照:

于 2011-02-20T14:46:15.823 に答える
0

JPAでは「埋め込み可能」オブジェクトと呼ばれるHibernate「コンポーネント」が必要です。component/embeddable には 2 つのフィールドがあり、エンティティ クラスには component/embeddable のインスタンスが 1 つだけあります。2 つの列は、エンティティの残りのフィールドと共にエンティティ テーブルに存在します。

于 2011-02-20T14:42:39.827 に答える