java - Hibernate <set> 来自连接表的键

标签 java hibernate mapping set

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

<set ...>
  <key column="COLUMN_FROM_BAR" />
  <one-to-many class="xyz.Foo" />
</set>

此处 FOO 具有到 BAR (FOO.BAR_ID) 的 FK,因此连接是通过 Foo.hbm.xml 中的元素完成的:

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

最佳答案

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>

关于java - Hibernate <set> 来自连接表的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3733902/

相关文章:

javascript - 在大网格上映射小网格

java - 性能和 hibernate

java - 如何修复服务器返回 HTTP 响应代码 400 且无法处理转换的问题

java - 在 Java 中创建二维数组的语法

java - Android中的可选类

java - Hibernate 不允许我添加具有自动生成身份 PK 的 Derby 数据库实体

java - Spring-boot JPA 实体 OneToOne 添加与父级相关的新子级

java - 用 string.format 替换 '-' 的空格?

java - 如何使用 @OrderBy 对 Hibernate 中的复合键之一进行排序

fluent-nhibernate - 类别/子类别树的 Fluent NHibernate 映射