表格Product
代表两个实体Parent
和Child
。这种关系在单独的表格中定义,以免Relation_Table
。
产品的hbm非常简单。它没有Reference_Table
的任何引用。 Relation_Table
的hbm如下所示:
<class name="RelationMember" table="RELATION_TABLE" lazy="true">
<id column="relation_id" type="int"/>
<many-to-one name="parent" class="Product" column="pId"/>
<many-to-one name="child" class="Product" column="child_id"/>
</class>
如何获取父级给定children
的所有pId
?
首先我会获取child_id
的列表,然后使用该列表读取Product
表中的所有实体吗?
想知道Hibernate是否提供了一些将child_id
直接映射到Product
表中获取实体的方法。
答案 0 :(得分:0)
您没有包含您的类,但在典型情况下,JPQL查询类似于:
select child from Product child where child.parent.id in :pids;
但是Hibernate仍会将其转换为2个连接,Product x Relation_Table x Product。
您可以使用本机查询只有1个连接(Product x Relation_Table)。 但由于连接将是基于索引的连接,因此您可以信任DB以快速运行它,并且不需要进行额外的优化。