我想将一个到多个集合映射到子类,但集合的键是父类的属性。
目前我正在映射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。
有没有办法做这样的事情?
答案 0 :(得分:1)
如果我理解你的问题,那么我认为这是不可能的。如果类Bar具有对Foo的引用,那么使用当前配置生成的FK是正确的。如果你希望Bar有一个对AbstractFoo的引用,那么它将为abstractFoo表创建FK,并允许AbstractFoo的任何子类作为引用bay bar。
通常这实际上就是你想要的......对超类的引用。但是,在不了解您的设计的情况下,如果您仍然需要对子类的引用,那么您的配置是正确的。