2

1 対多のコレクションをサブクラスにマップしたいのですが、コレクションのキーは親クラスの属性です。

現在、私はAbstractFoo FooとBarクラスを次のようにマッピングしています:

<class name="AbstractFoo" abstract="true" table="abstractFoo">
  <id name="_id" column="foo_pk">
    <generator class="native" />
  </id>
  <many-to-one name="_bar" column="bar_fk">
  </many-to-one>
  <joined-subclass name="Foo" table="foo">
    <key column="abstractFoo_fk" />
    <property name="_type" column="type" />
  </joined-subclass>
</class>
<class name="Bar" table="bar">
  <map name="_foos" inverse="true">
    <key column="bar_fk"/>
    <map-key column="type">
    <one-to-many class="Foo" />
  </map>
</class>

実際、そのマッピングを使用すると、Hibernate は、abstractFoo ではなくテーブル foo で列 bar_fk を見つけようとします。

そのようなことをする方法はありますか?

4

1 に答える 1

1

あなたの質問を正しく理解していれば、それは不可能だと思います。クラス Bar に Foo への参照がある場合、現在の構成で生成された FK は正しいです。Bar に AbstractFoo への参照を持たせたい場合は、abstractFoo テーブルへの FK を作成し、AbstractFoo のサブクラスを参照ベイ Bar にできるようにします。

通常、これは実際に必要なものです...スーパークラスへの参照。ただし、設計について詳しく知らなくても、サブクラスへの参照が本当に必要な場合は、構成は正しいです。

于 2009-12-21T14:28:57.447 に答える