休眠<设置>来自连接表的键

发布于 2024-09-19 15:21:56 字数 847 浏览 0 评论 0原文

我想知道是否可以在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月牙弯弯 2024-09-26 15:21:56

Java Persistence with Hibernate(第296页)中找到了答案。技巧是设置与目标类(Foo)不同的集合表(BAR):

  <set table="BAR" ...>
    <key column="COLUMN_FROM_BAR" /> 
    <many-to-many
      class="xyz.Foo"
      column="BAR_ID"
      unique="true"
      />
  </set>

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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文