Convertir consulta hql a QueryOver

46 views
Skip to first unread message

Andrés Falcón

unread,
Mar 13, 2013, 12:13:17 PM3/13/13
to nhibernat...@googlegroups.com
Buenos días, quería que alguien me tire alguna punta de como traducir la siguiente consulta HQL.

Tengo 2 clases: Usuario y Pin, donde usuario tiene Pins con la siguiente configuración en el mapping hbm

<set name="Pins" table="Pin_por_Usuario" >
      <key column="id_usuario" />
      <many-to-many class="Pin">
        <column name="id_pin" />
      </many-to-many>
    </set>

Quiero obtener como resultado, los usuarios y los pines (en caso de existir) y de cumplir con el criterio del where.

consulta hql: "select usuarios, pins from Usuario usuarios left join usuarios.Pins pins where usuario.nombre == paramNombre"

Si realizo esta consulta con hql, me devuelve cada registro con el Usuario y Pin (si corresponde) o solo el Usuario.

Intenté realizarlo con QueryOver, pero hay algo que no me funciona, o no termino de comprender

Pin pins = null;
           
var queryOver = Session.QueryOver<Usuario>().Where(u => u.Nombre == nombre);

IList<object> resultado = queryOver.Left.JoinAlias(u => u.Pins, () => pins)
                .SelectList(list => list
                    .Select(u => u)
                    .Select(u  => pins))
                    .List<object>();

Arroja NullReferenceException y me imagino que viene por la variable "pins" (.Select(u  => pins))
Entonces saco la línea ".Select(u  => pins)" para probar si funciona y ahora el problema que arroja es :"NHibernate.QueryException : could not resolve property:  of: Domain.Usuario"
Si remplazo la línea ".Select(u => u)" por ".Select(u => u.Id)", devuelve correctamente el resultado.

¿Alguien me podría iluminar para resolver esta consulta?

Muchas gracias cualquier ayuda que me puedan brindar

Saludos,

Andrés Falcón.
Reply all
Reply to author
Forward
0 new messages