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:
- Użycie @Formula i domapowaniu osobnego pola z natywnym podzapytaniem - to rozwiązanie jakoś średnio mi się podoba z uwagi na podzapytanie w select.
- Rozszerzenie dialektu hibernate o słowa kluczowe których brakuje - to też mi jakoś średnio się podoba i nie zawsze chciało działać.
- Napisać zapytanie bez użycia funkcji których nie mam i później obrobić dane po stronie javy - to mi się też nie podoba.
- 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?