我有两个对象Client和Procedure。客户端可以有一个过程列表,并且一个过程只能链接到一个客户端。
在客户端中,我有一个过渡属性nbProcedure,该属性用于存储客户端的过程数。
我使用带有以下查询的Spring数据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))
的配置或误用
答案 0 :(得分:0)
这可能是由于实体中未初始化的惰性获取关联。可以使用JOIN FETCH
代替JOIN
来避免多次查询。