如何避免JPQL查询执行多个SQL查询?

时间:2019-07-01 16:29:47

标签: spring-data-jpa

我有两个对象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))的配置或误用

1 个答案:

答案 0 :(得分:0)

这可能是由于实体中未初始化的惰性获取关联。可以使用JOIN FETCH代替JOIN来避免多次查询。