Hibernate:获取一对多映射的数据

时间:2015-04-09 15:42:57

标签: java hibernate

表格Product代表两个实体ParentChild。这种关系在单独的表格中定义,以免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表中获取实体的方法。

1 个答案:

答案 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以快速运行它,并且不需要进行额外的优化。