来自连接表的Hibernate <set>键</set>

时间:2010-09-17 08:53:24

标签: java hibernate mapping set

我想知道是否有可能以这种方式在Hibernate映射中定义Set,该元素将在原始( FOO )表中指定不是列,而是在连接的表中指定( BAR )。假设我们有一些FooContainer.hbm.xml,其中包含SetFoo个对象:

<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 = ?

1 个答案:

答案 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>