Mysql
 sql >> Database >  >> RDS >> Mysql

Query di ricerca in sospensione

Dopo aver esaminato la tua domanda, mi rendo conto di alcuni problemi con il tuo HQL che devono essere affrontati. Vedi la sezione qui:

https://docs .jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html#queryhql-joins

Quindi, facendo un FETCH ALL PROPERTIES non hai la possibilità di filtrare i figli z nella stessa query. La tua query dovrebbe apparire così:

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 ?)

L'unica cosa di cui non sono sicuro è questa proprietà qui:

(id_osoby)

Non vedo questo alias da nessuna parte e non vedo questa colonna in nessuna delle tue tabelle. Sei sicuro che sia necessario?

Quindi questo ora ti darà o entità padre che sono state filtrate dalle proprietà dei figli z. Tuttavia, i bambini z sono pigri, quindi è necessario interrogarli indipendentemente dall'ID z o dovresti essere in grado di recuperarli pigri all'interno della stessa transazione di ibernazione semplicemente chiamando il metodo getter per restituire l'elenco di bambini z.