Java Hibernate:拆分查询

Java Hibernate:拆分查询,java,hibernate,optimization,jpa,hql,Java,Hibernate,Optimization,Jpa,Hql,JPA/Hibernate问题 我有一个对一个表的查询,我们称之为Release,我想从中检索一行,将其映射到一个实体。 然后,这个实体有五个一对多的关联,这些关联都将在不久的将来使用,所以我想尽快获取它们。现在,这些一对多关联中的每一个都有数量在3到300之间的行。如果实际执行,该查询总共将加载大约一百万行 因此,对通用HQL查询进行一点预览,并在括号中添加一些注释: select rv, al, ... (blabla) from from Release rv left outer j

JPA/Hibernate问题 我有一个对一个表的查询,我们称之为Release,我想从中检索一行,将其映射到一个实体。 然后,这个实体有五个一对多的关联,这些关联都将在不久的将来使用,所以我想尽快获取它们。现在,这些一对多关联中的每一个都有数量在3到300之间的行。如果实际执行,该查询总共将加载大约一百万行

因此,对通用HQL查询进行一点预览,并在括号中添加一些注释:

select rv, al, ... (blabla) from 
from Release rv 
left outer join fetch App app (on releaseId)
left outer join fetch Appconfig ac (on appId)
left outer join fetch Appbind ab (on appId)
left outer join fetch Releaseconfig rc (on releaseId)
left outer join fetch Somestuff st (on releaseId)
left outer join fetch Points p (on releaseId)
left outer join fetch Pointconfig pc (on pointId)
left outer join fetch Pointstuff ps (on pointId)
where rv.releaseId = :id
现在,比方说,应用程序有100行,Appconfig和Appbind对于每个appId各有20行;Releasconfig约为15,Somestuff约为20,Points约为130,Pointconfig约为30,Pointstuff约为50。 这将导致大量的查询

有没有一种方法可以让我拆分查询并让Hibernate映射它们?比如说,我先要App、Appconfig和Appbind,然后是Releaseconfig本身和一些东西,然后是point、Pointconfig和Poinstuff

谢谢,
Chris

您可以通过使用如您所示的查询(例如App、Appconfig和Appbind)预先加载所需的数据来实现此目的。您没有强制Hibernate加载的所有其他集合都将由代理表示

然后,当需要下一个集合时,可以使用Hibernate.initialize传入代理以强制Hibernate加载它。这将需要一个单独的查询