HQL - jak sobie radzicie z brakiem niektórych funkcji

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?

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.
0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1