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