Hibernate(JPA)如何执行热切查询,加载所有子对象

克里斯·金普顿(Chris Kimpton):

关于我之前的问题,我想确保所有子对象都已加载,因为我有多个线程可能需要访问数据(从而避免延迟加载异常)。我了解做到这一点的方法是在查询(EJB QL)中使用“ fetch”关键字。像这样:

select distinct o from Order o left join fetch o.orderLines

假设模型中包含一个OrderOrderLines

我的问题是,似乎需要“ distinct”关键字,否则我似乎会Order为每个关键字找回一个OrderLine我做对了吗?

也许更重要的是,是否有一种方法可以拉入所有子对象,无论深度如何?我们大约有10-15个类,对于服务器,我们将需要加载所有内容...我避免使用FetchType.EAGER它,因为这意味着它一直很渴望,尤其是Web前端加载了所有内容-但这也许就是方法-你做什么?我似乎记得我们以前尝试过这种方法,然后获得了非常慢的网页-但这也许意味着我们应该使用二级缓存?

詹姆斯·罗(James Law):

更改注释不是IMO的好主意。由于无法在运行时将其更改为惰性。最好使所有内容都变得懒惰,并根据需要获取。

我不确定我是否了解没有映射的问题。左连接提取应该是您描述的用例所需要的。当然,如果订单行有一个订单作为其父订单,那么您将获得每个订单行的订单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何避免在Active Admin表单上进行N + 1查询并执行热切加载

带有参数的热切加载-Laravel

如何导出热切的执行模型?

如何热切地在JPA和Hibernate中获取数据以在会话外部使用?

具有动态搜索和热切加载的N + 1个查询

使用热切加载从给定文章中获取所有相关文章

JPA和Hibernate:预先加载执行后续查询来获取所有数据,而不是只在一个查询做

NHibernate-带有多个查询的对象的热切负载图

基于第一个查询的热切加载

如何查询文档中对象的所有子级?

在 Laravel eloquent 关系中以多对多的方式热切加载(检索所有带有指定标签的帖子)

JPA / HIBERNATE:如何查询返回非实体对象或带有内部非实体对象的对象列表?

有条件的热切加载-Laravel

如何使用多个约束进行 Laravel 热切加载?

如何在Eloquent中筛选热切加载的表?

如何从@ManyToMany关系中删除具有JPA和Hibernate中许多子对象的子对象

如何对JPA中的多级子级执行所有级联操作(PERSIST,UPDATE,REMOVE)

如何监视JPA和Hibernate执行的慢速SQL查询

Hibernate - SQL 查询:如何获取从特定节点开始的所有子 descandants

在Laravel上通过查询构建器使用whereRaw条件进行热切加载

Laravel - 在关系热切加载中集成大型原始查询

如何列出所有父对象的所有子对象?

如何使用 Hibernate 在 Spring Boot 中查询实体的所有关系对象?

JPA / Hibernate:CriteriaBuilder-如何使用关系对象创建查询?

弹性搜索中的热切加载

路由模型绑定的热切加载

Laravel - 热切加载模型功能

Postgres 执行合并中的所有子查询

急切地加载所有相关对象