0

我正在使用 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
)
4

0 回答 0