0

マップしたいかなり単純な(私が思うに)クラスがあります:

<class name="parent" table="PARENT_TABLE">
    <composite-id>
        <key-property name = "a" column = "A"/>
        <key-property name = "b" column = "B"/>
        <key-property name = "c" column = "C"/>
    </composite-id>
    <map name = "theMap" table = "PARENT_TABLE" where="type='access'">
        <key foreign-key = "PARENT_TABLE_FK">
            <column name = "A"/>
            <column name = "B"/>
            <column name = "C"/>
        </key>
        <map-key column = "X" type = "double"/>
        <element column = "Y" type = "double" not-null="true"/>
    </map>
</class>

hibernate の 1 つのテーブルに複数のセットをマッピングするwhere="type='access'"ことからトリックを取得しましたが、問題は、マップでは、外部キー (A、B、C、X) が親テーブル (A、B、C) と一致していないことです。 )。

これを幸せにする方法を知っている人はいますか?マップを個別にマップする必要がある場合、PARENT_TABLE は完全に冗長になります。

4

1 に答える 1

0

それはきれいではなく、Schemaexport を役に立たなくしますが、それを機能させるには、親を一意にする where 条件を指定し、insert/update を false に設定し、マップが親を間接的に保持できるようにする必要があります。

<class name="parent" table="PARENT_TABLE" where="x = (SELECT x FROM PARENT_TABLE p WHERE p.(a,b,c) = a,b,c LIMIT 1)" insert="false" update="false">
于 2012-08-14T19:54:01.123 に答える