Po uaktualnieniu do wersji nowszej hibernacji (domyślam się, że przyszedł z przełącznikiem z JBoss 4.2.2 na JBoss 6), niektóre pytania nie z komunikatem:„Automatic” join pobierania podmiotów zagnieżdżonych nie po aktualizacji Hibernate
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName= (...)
ma to miejsce zawsze w przypadku zastosowania zapytanie tak:
SELECT entityA FROM EntityA entityA
JOIN FETCH entityA.entityB
LEFT JOIN FETCH entityA.entityB.someField
WHERE entityA.entityB.anotherField LIKE :someParameter
rozwiązaniem tego problemu jest zapewnienie „entityA.entityB” alias, a następnie użycie tego skrótu w klauzuli WHERE
. Ale w niektórych zapytaniach nie jest jednoznacznie podana LEFT JOIN FETCH
, ale nadal klauzula WHERE
wykorzystuje właściwość odwołanej jednostki. Czy tam też się nie uda? Co się zmieniło, tak że nagle przestaje działać po przejściu na nową wersję JBoss?
Następujące question jest związane z tym pytaniem i zawiera rozwiązanie, ale nie wyjaśnia problemu.
Twoje pytanie pomogło mi znaleźć rozwiązanie mojego problemu, po aktualizacji z wersji 3.2.6.ga do wersji 3.5.6 otrzymałem "zapytanie o dołączenie pobierania", ale właściciel pobranego skojarzenia nie był obecny na liście wyboru ", używając podejścia aliasowego, które zasugerowałeś, że działa, nie może ci pomóc z" dlaczego "! –
jest tym HQL lub standardowym JPQL? – wrschneider
Wykonuje się to za pomocą 'EntityManager.createQuery', więc domyślam się, że to HQL. –