2

我想将一对多的集合映射到子类,但集合的键是父类的属性。

目前我正在像这样映射 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 试图在表 foo 上找到列 bar_fk 而不是 abstractFoo。

有没有办法做这样的事情?

4

1 回答 1

1

如果我正确理解了您的问题,那么我认为这是不可能的。如果类 Bar 具有对 Foo 的引用,则使用当前配置生成的 FK 是正确的。如果您希望 Bar 具有对 AbstractFoo 的引用,那么它将创建到 abstractFoo 表的 FK 并允许 AbstractFoo 的任何子类引用bay Bar。

通常这实际上是你想要的......对超类的引用。但是,在不了解您的设计的情况下,如果您真的只需要对子类的引用,那么您的配置是正确的。

于 2009-12-21T14:28:57.447 回答