我正在使用 JPA 的 findAll() 方法来获取所有行以及子表中的任何行。问题是有数以千计的记录,JPA 不会一次性获取所有记录,它首先查询父表,然后为每个父记录逐个查询子表。有没有一种方法可以在没有循环的情况下一次性获取它,比如获取 JPA 当前正在执行的操作?
我知道FetchMode.JOIN但它不适用于findAll. 它适用于父实体的单个记录。
如果可以一次性完成,是否有一种方法可以一次性计算父表中每一行的子表的行数,而无需再次进行单独的查询?
编辑:好的,FetchType.SUBSELECT解决了我的问题。剩下的唯一事情就是现在计算子表的计数。
我想做的是这样的:
data class Customer(
val name: String
@OneToMany
val addresses: List<Address>,
//Count of another child table which I don't want to fetch as those could be too huge to fetch
@Query("select count(o) from Order o where o.customer.id=id")
val countOrders: Int
)