2011-03-23 2 views
8

Tengo el siguiente modelo Activity con la propiedad dependiente del idioma Title. La dependencia del idioma se define con dos entidades adicionales Translation (El título es de este tipo, muchos-a-uno) y TranslationValue (uno-a-muchos)Unir a obtención: "búsqueda especificada de obtención de unión, pero el propietario de la asociación obtenida fue

Si escribo lo siguiente HQL:.

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

Esto funciona bien hasta ahora, pero tan pronto como se agrego acto en. el enunciado select, tengo un problema con la combinación de 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

No puedo entender por qué Hibernate no le gusta eso !?

Thx para cualquier tipps!

Respuesta

9

... resulta que necesito definir un alias para la primera unión. Esto hace el truco (aviso alias title):

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

¿Y por qué es eso? Funciona para mí también, después de tener problemas después de actualizar la versión de Hibernate. ¿Cambiaron algo? La misma consulta exacta se ejecutó correctamente en JBoss 4.2.2.GA pero no en JBoss 6.0.0.Final. –

+0

Sin embargo, esto no funcionará si intenta seleccionar una combinación de campos y entidades anidadas :( – chrismarx

+0

Me enfrenté al mismo problema al actualizar de Hibernate 3.3 a Hibernate 3.6 y en ninguna parte de la (s) guía (s) oficial (es) de migración mencionó que el comportamiento del analizador de consultas podría haber cambiado. ¡Hibernate necesita hacer un mejor trabajo con sus guías de migración! –

Cuestiones relacionadas