休眠< set>从加入表中输入密钥 [英] Hibernate <set> key from joined table

查看:97
本文介绍了休眠< set>从加入表中输入密钥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道是否可以在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>

这篇关于休眠&lt; set&gt;从加入表中输入密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆