#kotlin #select #spring-data-jpa #one-to-many
Вопрос:
Я использую метод 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
)