当key在父类中时,如何将一对多集合映射到已连接的子类

时间:2009-12-21 14:14:14

标签: java hibernate collections joined-subclass

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

目前我正在映射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。

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

1 个答案:

答案 0 :(得分:1)

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

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