HQL - jak sobie radzicie z brakiem niektórych funkcji

HQL - jak sobie radzicie z brakiem niektórych funkcji
S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
0

Zastanawiam się w jaki sposób radzicie sobie gdy potrzebujecie użyć funkcji których nie obsługuje HQL?
Przykładowo często brakuje mi funkcji typu LISTAGG (lub GROUP_CONCAT w zależności od bazy danych).

Problem można rozwiązać na kilka sposobów:

  1. Użycie @Formula i domapowaniu osobnego pola z natywnym podzapytaniem - to rozwiązanie jakoś średnio mi się podoba z uwagi na podzapytanie w select.
  2. Rozszerzenie dialektu hibernate o słowa kluczowe których brakuje - to też mi jakoś średnio się podoba i nie zawsze chciało działać.
  3. Napisać zapytanie bez użycia funkcji których nie mam i później obrobić dane po stronie javy - to mi się też nie podoba.
  4. Napisanie widoku z poziomu bazy danych i następnie zmapowanie go jako osobna klasa na potrzeby tego konkretnego zapytania

Zwykle kończę z rozwiązaniem 4, czyli osobnym widokiem pod którym siedzi zapytanie którego nie da się napisać w HQL.
Jak sobie radzicie z tym problemem? Czy macie jakieś inne lepsze rozwiązanie?

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
0

Są następujące rozwiązania

  1. Nie używamy bazy SQL,
  2. Jeśli używamy bazy SQL to poprzez JOOQ,mybatis lub inne biblioteki
  3. Jeśli jednak jesteśmy bardzo uparci to w JPA/hibernate są native query, a w SQL widoki. Dokładnie tak jak piszesz.
SZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 616
0

My rejestrujemy brakujące funkcje, oczywiście obsługując 3 bazy musisz to zaimplementować 3 razy

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.