我想知道是否有可能以这种方式在Hibernate映射中定义Set
,该元素将在原始( FOO )表中指定不是列,而是在连接的表中指定( BAR )。假设我们有一些FooContainer.hbm.xml
,其中包含Set
个Foo
个对象:
<set ...>
<key column="COLUMN_FROM_BAR" />
<one-to-many class="xyz.Foo" />
</set>
此处 FOO 的FK为 BAR ( FOO.BAR_ID ),因此通过Foo.hbm.xml中的元素进行加入:< / p>
<many-to-one class="xyz.Bar" fetch="join" column="BAR_ID" foreign-key="barId" ... />
,只要提取xyz.Foo
,就会选择加入 FOO-BAR 。
问题在于,生成的Set
获取选择的条件类似于:
... WHERE _FOO_0.COLUMN_FROM_BAR = ?
当需要时:
... WHERE _BAR_0.COLUMN_FROM_BAR = ?
答案 0 :(得分:1)
在Java Persistence with Hibernate(第296页)中找到答案。 Trick正在从目标类(Foo
)设置不同的集合表( BAR ):
<set table="BAR" ...>
<key column="COLUMN_FROM_BAR" />
<many-to-many
class="xyz.Foo"
column="BAR_ID"
unique="true"
/>
</set>