sql >> Base de Datos >  >> RDS >> Mysql

Consulta de búsqueda de Hibernate

Después de analizar su consulta, me doy cuenta de algunos problemas con su HQL que deben abordarse. Vea la sección aquí:

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

Entonces, al hacer FETCH ALL PROPERTIES, no tiene la capacidad de filtrar en los niños z en la misma consulta. Su consulta debería verse así:

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

Lo único de lo que no estoy seguro es de esta propiedad aquí:

(id_osoby)

No veo que esto tenga un alias en ninguna parte y no veo esta columna en ninguna de sus tablas. ¿Estás seguro de que esto es necesario?

Entonces, esto ahora le dará entidades principales que han sido filtradas por las propiedades de los elementos secundarios z. Sin embargo, los niños z son perezosos, por lo que debe consultarlos de forma independiente por el ID de z o debería poder recuperarlos dentro de la misma transacción de hibernación simplemente llamando al método getter para devolver la lista de niños z.