Optymalne wybranie encji i funkcje agregujące na dzieciach - Hibernate one to many

Optymalne wybranie encji i funkcje agregujące na dzieciach - Hibernate one to many
S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
0

Załóżmy że mamy klasy Book i Review
Klasa Review ma ocene ( w skali 0-5 np.) i mapowania na wiele do jednego względem Book.
Zastanawiam się jak optymalnie przeprowadzić operację wybrania książek i dodania do nich sumy ilości recencji i średnej oceny bez stosowania fetch joina - po prostu chce wybrać książki i dane z recenzji bez ładowania recenzji
Czy istnieje jakaś optymalna metoda na to?
Można by użyć @Formula ale raczej nie jest to specjalne odpowiednie(mało optymalne),można jeszcze wybrać chyba takie coś w HQL i wtedy zwróci listę tablic obiektów, ale czy istnieje jakaś inna opcja (np. taka żeby można było korzystać z Criteria API)

krzysiek050
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1272
0

Spróbuj z czymś takim. Nie jestem pewny czy zabangla, ale jeżeli tak, to będzie optymalne. Do tego da się to przepisać na Criteria API (bueee).

Kopiuj
@AllArgsConstructor
class BookWithReviewCount {
    private Book book; 
    private Integer reviewCount;
}
Kopiuj
Select new BookWithReviewCount(b, count(r)) FROM Book b INNER JOIN b.reviews r

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.