是否有可能将Hibernate实施的JPA强制转换为使用批量提取进行预先加载?
你可能想知道我为什么要做这么奇怪的事情,所以让我解释一下。
我们有两个实体A
和B
。 A
与B
之间存在多对一的关系。
我想通过搜索加载A
个实体,我希望在从存储库返回之前将它们完全加载。
但是由于A
有很多B
&B
,所以(相关的)B
都会在二级缓存。因此,我希望每次都不要从数据库中获取所有{{1}}。
答案 0 :(得分:0)
正如我理解您的问题,解决方案是在NamedQuery中使用带有FETCH
指令的NamedQuery:
SELECT DISTINCT B LEFT JOIN FETCH B.a A//will return fully loaded B instances
如果要指定批量大小,可以在休眠(而不是JPA)中使用@BatchSize
。请查看this link以获取示例。