Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Hibernate-Suchanfrage

Nachdem ich mir Ihre Anfrage angesehen habe, sind mir einige Probleme mit Ihrem HQL aufgefallen, die behoben werden müssen. Siehe Abschnitt hier:

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

Wenn Sie also FETCH ALL PROPERTIES ausführen, haben Sie nicht die Möglichkeit, die z-Kinder in derselben Abfrage zu filtern. Ihre Abfrage sollte dann so aussehen:

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

Das einzige, bei dem ich mir nicht sicher bin, ist diese Eigenschaft hier:

(id_osoby)

Ich sehe nirgendwo einen Alias, und ich sehe diese Spalte in keiner Ihrer Tabellen. Sind Sie sicher, dass dies erforderlich ist?

So erhalten Sie nun o übergeordnete Entitäten, die nach Eigenschaften der z untergeordneten Elemente gefiltert wurden. Die z-Kinder sind jedoch faul, also müssen Sie diese unabhängig von der z-ID abfragen, oder Sie sollten in der Lage sein, sie innerhalb derselben Hibernate-Transaktion faul abzurufen, indem Sie einfach die Getter-Methode aufrufen, um die Liste der z-Kinder zurückzugeben.