休眠< set>从加入表中输入密钥 [英] Hibernate <set> key from joined table
问题描述
我想知道是否可以在Hibernate映射中以这种方式定义 Set
,那么该元素将在原始中指定不是列( FOO )表格,但加入了一个( BAR )。假设我们有一些 FooContainer.hbm.xml
,其中包含 Foo code> objects:
I wonder if it's possible to define Set
in Hibernate mapping in a such way, that element would specify not column in original (FOO) table, but in joined one (BAR). Let's say we have some FooContainer.hbm.xml
, which contains Set
of Foo
objects:
<set ...>
<key column="COLUMN_FROM_BAR" />
<one-to-many class="xyz.Foo" />
</set>
这里 FOO 的FK为 BAR ( FOO.BAR_ID ),因此通过Foo.hbm.xml中的元素完成连接:
Here FOO has FK to BAR (FOO.BAR_ID), so joining is done through element in Foo.hbm.xml:
<many-to-one class="xyz.Bar" fetch="join" column="BAR_ID" foreign-key="barId" ... />
导致加入 FOO-BAR 时,只要 xyz.Foo
被提取。
which results in joined FOO-BAR select whenever xyz.Foo
is fetched.
问题是生成的 Set
fetching select的条件如下所示:
Problem is that where condition of generated Set
fetching select is something like:
... WHERE _FOO_0.COLUMN_FROM_BAR = ?
当需要时:
when desired one is:
... WHERE _BAR_0.COLUMN_FROM_BAR = ?
推荐答案
在 Java持久化与Hibernate (第295页)。诀窍从目标类( Foo
)设置不同的设置表( BAR ):
Found the answer in Java Persistence with Hibernate (page 296). Trick is setting different set table (BAR) from target class (Foo
):
<set table="BAR" ...>
<key column="COLUMN_FROM_BAR" />
<many-to-many
class="xyz.Foo"
column="BAR_ID"
unique="true"
/>
</set>
这篇关于休眠< set>从加入表中输入密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!