spring-data-jpa - 如何避免 JPQL 查询执行多个 SQL 查询?
问题描述
我有两个对象客户端和过程。一个客户端可以有一个程序列表,一个程序只能链接到一个客户端。
在客户端中,我有一个临时属性 nbProcedure,用于存储客户端的过程数。
我使用 Spring data JPA,带有以下查询:
@Query("SELECT new Client(c, count(p))
FROM Procedure p
INNER JOIN p.client c
WHERE c.userId = ?1
GROUP by c.id")
fun getByUserIdOrderByNameWithNbProcedure(userId: String): List<Client>
我在日志中看到此查询已执行,但之后每行执行一个查询以选择客户端的所有属性。
如何避免按行进行所有查询,只执行一个查询?
我想,我错过了配置或滥用new Client(c, count(p))
解决方案
这可能是因为实体中未初始化延迟获取关联。可以使用JOIN FETCH
而不是JOIN
避免多次查询。
推荐阅读
- python - 我如何在不和谐中 ping 某人
- python - 如何从 python 的列表中删除“”?
- android - 可以在 Google Play 商店之外购买应用内功能吗?
- mysql - ProxySQL 无法访问 RDS 编写器主机
- postgresql - 无法更新 postgresql 中的值
- python - 如何打印列表中的所有子目录?
- php - 如何在 laravel 8 eloquent 中计算价值?
- reactjs - MQTT 消息在 React 中的 Websocket 上打开太多 TCP 连接
- database - 如何在没有排序键的情况下从 DynamoDB 中获取排序结果?
- ios - 从 iOS 上的物理键盘检测特殊键