no tiene sentido "left join fetch obj.InformacionGenerica".Si generas las HQL a run-time deberias hacer lo mismo que hace NH generando SQL. Cuando escribis "obj.InformacionGenerica.CodigoPersona.Clave" NH se da cuenta y se fija en los metadata para conocer las relaciones, con eso construye los joins necesarios para llegar a la propiedad "Clave" que está tres niveles mas abajo.
Si queres generar HQL dinamicas deberías hacer lo mismo o, even better, generar Criteria y no HQL. El 9 de octubre de 2009 16:56, roberto <[email protected]> escribió: > > Si entiendo el punto, una vez que contamos con la información del > component en la misma tabla... en otro órden de ideas, ¿lo que me > intenta decir es que esta nueva versión lo identifica como error? > > Yo lo hago asi debido a que al hql que esta viendo se crea en runtime, > identifica la propiedad InformacionGenerica en la clase como objeto > (aunque en el mapping nosotros sabemos que es un Component) y > agregandolo a la clausula from como nested object... > > Pedí ayuda debido a que en la versión 1.2 de NH me permitia hacerlo... > =) > > On 9 oct, 12:49, Fabio Maulo <[email protected]> wrote: > > preguta...Que sentido tiene un "left join" o un "join" con un component ? > > > > El 9 de octubre de 2009 16:06, roberto <[email protected]> > escribió: > > > > > > > > > > > > > > > > > Hola a todos... > > > > > Me preguntaba si alguno de ustedes se habia topado con el siguiente > > > error: > > > > > Justo acabo de migrar de la versión 1.2 a 2.1 de NH y dentro de todo > > > funciono bien, excepto por un hql query el cual involucra un Component > > > en el mapping... > > > > > Agrego mi mapping: > > > > > <?xml version="1.0" encoding="utf-8" ?> > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> > > > <class name="Core.Moneda, Core" table="tblMonedas" lazy="false"> > > > <id name="Id" column="id" type="int" unsaved-value="0"> > > > <generator class="identity" /> > > > </id> > > > <property name="Clave" column="clave" type="int" /> > > > <property name="Nombre" column="nombre" type="string" /> > > > <many-to-one name="TipoMoneda" column="tipoMoneda" > > > class="Core.TipoMoneda, Core" cascade="none" /> > > > <property name="GenSubCuenta" column="subCuenta" type="string" /> > > > <component name="InformacionGenerica" > > > class="Core.InformacionGenerica, Core"> > > > <property name="Alta" column="alta" /> > > > <property name="Cambio" column="cambio" /> > > > <property name="Baja" column="baja" /> > > > <property name="Comentario" column="comentarios" /> > > > <many-to-one name="CodigoPersona" class="Core.Usuario, Core" > > > column="codigoUsuario" /> > > > </component> > > > </class> > > > > > Mi HQL: > > > > > select obj from Moneda as obj left join fetch obj.TipoMoneda left join > > > fetch obj.InformacionGenerica where obj.Clave like 'pesos' or > > > obj.Nombre like '%pesos%' or obj.TipoMoneda.Nombre like '%pesos%' or > > > obj.GenSubCuenta like '%pesos%' or obj.InformacionGenerica.Comentario > > > like '%pesos%' or obj.InformacionGenerica.Alta like '%pesos%' or > > > obj.InformacionGenerica.Cambio like '%pesos%' or > > > obj.InformacionGenerica.Baja like '%pesos%' or > > > obj.InformacionGenerica.CodigoPersona.Clave like 'pesos' or > > > obj.InformacionGenerica.CodigoPersona.Nombre like '%pesos%' > > > > > Finalmente la excepción: > > > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.CreateFromJoinElement > > > (IASTNode path, IASTNode alias, Int32 joinType, IASTNode fetchNode, > > > IASTNode propertyFetch, IASTNode with) > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.joinElement() > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromElement() > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromElementList() > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromClause() > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.unionedQuery() > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.query() > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.selectStatement() > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.statement() > > > en NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator.Translate() > > > en NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Analyze > > > (HqlParseEngine parser, String collectionRole) > > > en NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.DoCompile > > > (IDictionary`2 replacements, Boolean shallow, String collectionRole) > > > en NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Compile > > > (IDictionary`2 replacements, Boolean shallow) > > > en NHibernate.Engine.Query.HQLQueryPlan..ctor(String hql, String > > > collectionRole, Boolean shallow, IDictionary`2 enabledFilters, > > > ISessionFactoryImplementor factory)... > > > > > Estuve leyendo un thead en los foros de Hibernate con el mismo > > > problema: > > > > >http://opensource.atlassian.com/projects/hibernate/browse/HHH-1895?pa. > .. > > > pero comentan que es un unsupported feature, no se si para NH suceda > > > lo mismo... > > > > > Agradezco mucho su ayuda... > > > > > Saludos desde México. > > > > -- > > Fabio Maulo > > > -- Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
