2011-03-23 17 views
8

Ho il seguente modello Activity con la proprietà in base alla lingua Title. La dipendenza dalla lingua è definita con due entità aggiuntive Translation (il titolo è di questo tipo, molti-a-uno) e TranslationValue (uno-a-molti)Join Fetch: "query specificato join fetching, ma il proprietario dell'associazione scaricata era

Se scrivo la seguente HQL:.

from Activity act join fetch act.Title join fetch act.Title.TranslationValuesSet 

Questo funziona bene finora, ma non appena aggiungo atto in. l'istruzione select, ho un problema con il join di TranslationValuesSet:

select act from Activity act join fetch act.Title join fetch act.Title.TranslationValuesSet 

NHibernate.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=,role=Translation.TranslationValuesSet,tableName=TranslationValue,tableAlias=translatio3_,origin=Translation translatio2_,colums={translatio2_.TranslationId ,className=TranslationValue}}] [select act from Activity act join fetch act.Title join fetch act.Title.TranslationValuesSet

non riesco a capire perché Hibernate non lo fa così !?

Thx per qualsiasi tipp!

risposta

9

... risulta che è necessario definire un alias per il primo join. Questo fa il trucco (avviso alias title):

select act from Activity act join fetch act.Title title join fetch title.TranslationValuesSet 
+3

E perché? Funziona anche per me, dopo aver avuto problemi dopo aver aggiornato la versione di Hibernate. Hanno cambiato qualcosa? La stessa esatta query è stata eseguita correttamente in JBoss 4.2.2.GA ma non in JBoss 6.0.0.Final. –

+0

Tuttavia, questo non funzionerà se si tenta di selezionare un mix di campi e entità nidificate :( – chrismarx

+0

Ho affrontato lo stesso problema durante l'aggiornamento da Hibernate 3.3 a Hibernate 3.6 e non dove nelle guide di migrazione ufficiali hanno persino ha detto che il comportamento del parser di query potrebbe essere cambiato !! Hibernate deve fare un lavoro migliore con le loro guide di migrazione! –