sql >> Databáze >  >> RDS >> Mysql

Hibernate vyhledávací dotaz

Poté, co jsem se podíval na váš dotaz, uvědomuji si několik problémů s vaším HQL, které je třeba vyřešit. Viz sekci zde:

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

Takže provedením FETCH ALL PROPERTIES nemáte možnost filtrovat z potomků ve stejném dotazu. Váš dotaz by pak měl vypadat takto:

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

Jediná věc, kterou si nejsem jistý, je tato vlastnost zde:

(id_osoby)

Nikde nevidím tento alias a nevidím tento sloupec v žádné z vašich tabulek. Jste si jisti, že je to potřeba?

Takže to vám nyní dá o nadřazených entitách, které byly filtrovány podle vlastností z potomků. Děti z jsou však líné, takže je musíte hledat nezávisle podle ID z, jinak byste měli být schopni je líně načíst v rámci stejné transakce hibernace pouhým voláním metody getter, která vrátí seznam z potomků.



  1. Vícenásobné vložení SQL Oracle

  2. Těšíme se na PGConf India 2017

  3. Asynchronní čekání při provádění funkce C#

  4. Vztah více identických entit