休眠<设置>来自连接表的键设置>
我想知道是否可以在 Hibernate 映射中以这样的方式定义 Set
,该元素将指定不是原始(FOO)表中的列,而是在连接的表(FOO)中指定列。 >酒吧)。假设我们有一些 FooContainer.hbm.xml
,其中包含 Foo
对象的 Set
:
<set ...>
<key column="COLUMN_FROM_BAR" />
<one-to-many class="xyz.Foo" />
</set>
这里 FOO 有 FK到 BAR (FOO.BAR_ID),因此连接是通过 Foo.hbm.xml 中的元素完成的:
<many-to-one class="xyz.Bar" fetch="join" column="BAR_ID" foreign-key="barId" ... />
这会导致连接 FOO-BAR 选择每当xyz.Foo
被获取时。
问题是生成的 Set
获取选择的条件类似于:
... WHERE _FOO_0.COLUMN_FROM_BAR = ?
当需要时:
... WHERE _BAR_0.COLUMN_FROM_BAR = ?
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>
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" ... />
which results in joined FOO-BAR select whenever xyz.Foo
is fetched.
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 = ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在Java Persistence with Hibernate(第296页)中找到了答案。技巧是设置与目标类(
Foo
)不同的集合表(BAR):Found the answer in Java Persistence with Hibernate (page 296). Trick is setting different set table (BAR) from target class (
Foo
):