0

次のような@JoinColumnsアノテーションのreferencedColumnNameプロパティに相当するhibernateマッピングファイルを知っている人はいますか?

@ManyToOne
@JoinColumns ({
    @JoinColumn(name="FIELD_0", referencedColumnName="A", insertable=false, updateable=false),
    @JoinColumn(name="FIELD_1", referencedColumnName="B", insertable=false, updateable=false),
    @JoinColumn(name="FIELD_2", referencedColumnName="C", insertable=false, updateable=false),
    @JoinColumn(name="FIELD_3", referencedColumnName="D", insertable=false, updateable=false)

注釈への移行はオプションではなく、テーブル間で列名が異なる複合キーを使用して外部キー参照をセットアップする必要があります。

前もって感謝します。

4

1 に答える 1

1

私はこの同じ問題に取り組んできました。解決する前にあなたの質問を見て、ここに戻ってあなたを助けようと思いました. 私は4.2.2を使用しています。

名前を一般化しましたが、要点はわかると思います。「親」クラスには「子」オブジェクトのコレクションが含まれます。つまり、「子」テーブルには「親」テーブルへの外部キー制約があります。

次の点に注意してください。 1. コレクション キーの列の順序は、composite-id の順序と一致する必要があります。2. バッグ コレクションの属性は非常に重要です。私が以下に持っているものは私のために働いています。

<class name="ParentClass" table="parent_table">
    <composite-id name="parentCompositeId" class="ParentCompositeId">
        <key-property name="pkName1" column="pk_name_1" type="integer"/> 
        <key-property name="pkName2" column="pk_name_2" type="string"/>
        <generator class="assigned" />
    </composite-id>

    <property name="name" column="name" type="string" />
    <!-- etc... -->

    <bag name="childObjects" table="child_table" cascade="all" lazy="false" fetch="select">
        <key not-null="true">
            <column name="fk_child_name_1"/>
            <column name="fk_child_name_2"/>
        </key>
        <one-to-many class="ChildClass"/>
    </bag>
</class>

また、「子」クラスまたはそのマッピング構成の関連付けで何もしようとしないでください。非 FK プロパティをマップするだけで、休止状態に FK を処理させます。

于 2013-06-19T22:48:57.483 に答える