Po zapoznaniu się z Twoim zapytaniem zdaję sobie sprawę z kilku problemów z Twoim HQL, które należy rozwiązać. Zobacz sekcję tutaj:
https://docs .jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html#queryhql-joins
Tak więc, wykonując FETCH ALL PROPERTIES, nie masz możliwości filtrowania elementów potomnych z w tym samym zapytaniu. Twoje zapytanie powinno wtedy wyglądać tak:
SELECT new com.mycompany.kwestionariusz.Osoba(
o.id, o.imie, o.nazwisko, o.telefon, o.email,
o.uczelnia, o.doswiadczenie, o.skadSlyszal)
from Osoba as o
INNER JOIN o.zainteresowania as z
WHERE ((o.id) = (id_osoby))
and (LOWER(z.zainteresowanie) LIKE ?)
and (LOWER(z.zainteresowanie) LIKE ?)
and (LOWER(z.zainteresowanie) LIKE ?)
and (LOWER(z.zainteresowanie) LIKE ?)
and (LOWER(z.zainteresowanie) LIKE ?)
Jedyne, czego nie jestem pewien, to ta właściwość tutaj:
(id_osoby)
Nie widzę nigdzie tego aliasu i nie widzę tej kolumny w żadnej z Twoich tabel. Czy na pewno jest to potrzebne?
W ten sposób otrzymasz teraz jednostki nadrzędne, które zostały przefiltrowane według właściwości elementów potomnych z. Elementy potomne z są jednak leniwe, więc musisz pytać o nie niezależnie za pomocą identyfikatora z lub powinieneś być w stanie pobrać je z opóźnieniem w tej samej transakcji hibernacji, po prostu wywołując metodę pobierającą, która zwraca listę elementów potomnych z.