[NHibernate-Hispano] Convertir consulta

225 views
Skip to first unread message

Josué Ally Acuña Ruiz

unread,
May 24, 2010, 2:43:51 PM5/24/10
to Grupo NHibernate
Saludos a todos,
Existe alguna herramienta para convertir sql a hql,
Estoy teniendo problemas en traducir una consulta
seria esta:
SELECT
  public.criterios_evaluacion_muestra.id_criterio_evaluacion,
  public.criterios_evaluacion_muestra.descripcion,
  public.criterios_evaluacion_muestra.importancia,
  public.registro_evaluacion_muestra.aprobado
FROM
  public.criterios_evaluacion_muestra
  LEFT OUTER JOIN public.registro_evaluacion_muestra ON (public.criterios_evaluacion_muestra.id_criterio_evaluacion = public.registro_evaluacion_muestra.id_criterio_evaluacion)

WHERE
  public.criterios_evaluacion_muestra.id_padre = 19

--
Para escribir al Grupo, hágalo a esta dirección: NHibernat...@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Carlos Cocom

unread,
May 24, 2010, 3:19:35 PM5/24/10
to nhibernat...@googlegroups.com
Hola Josue

A simple vista tu HQL se ve como un SQL (seria bueno ver que parte es HQL)

aquí unos ejemplos de HQL http://nhforge.org/doc/nh/en/index.html#queryhql-joins

Para poder dar una mejor opinión seria bueno que postearas 

Tus mapping de tus entidaes que intervienen 
el HQL final que envias a NHibernate
y el método que con el que intentas ejecutar ese HQL

un comentario mas por si se te paso en tus mappings tienes que agregar el nombre de tu schema ( en este caso public)

Sobre la herramienta que convierta tus SQL a HQL creo que no existe pero existe algo mejor Nhibernate y ConfORM

Saludos

Diego Mijelshon

unread,
May 24, 2010, 3:35:21 PM5/24/10
to nhibernat...@googlegroups.com
No hay herramientas que traduzcan SQL a HQL más que esa que tenemos entre los hombros.
Lo más difícil en tu caso es traducir a HQL sin saber cuáles son tus entidades (HQL opera sobre entidades mapeadas, no sobre tablas)

   Diego


2010/5/24 Josué Ally Acuña Ruiz <josu...@gmail.com>

Josué Ally Acuña Ruiz

unread,
May 24, 2010, 3:43:31 PM5/24/10
to nhibernat...@googlegroups.com
Tengo las tablas mapeadas y todo va bien
La consulta anterior es del editor sql de mi DBMS la use para generar el sql
Intente traducir la consulta a hql pero no me devuelve el mismo resultado del SQL
Estos son los mapping:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    namespace="SICCA_Lib.Model" assembly="SICCA_Lib">

    <class name="Criterios_evaluacion_muestra" table="public.criterios_evaluacion_muestra">
        <id name="Id_criterio_evaluacion" column="id_criterio_evaluacion">
            <generator class="sequence" >
                <param name="sequence">criterios_evaluacion_muestra_id_criterio_evaluacion_seq</param>
            </generator>
        </id>
        <many-to-one name="Padre" column="id_padre" />
        <property name="Descripcion">
            <column name="descripcion" length="50"/>
        </property>
        <property name="Importancia">
            <column name="importancia" />
        </property>
        <set name="Hijos">
            <key column="id_padre"/>
            <one-to-many class="Criterios_evaluacion_muestra"/>
        </set>
        <set name="Registro_evaluacion_muestra">
            <key column="id_criterio_evaluacion"/>
            <one-to-many class="Registro_evaluacion_muestra"/>
        </set>
    </class>

</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    namespace="SICCA_Lib.Model" assembly="SICCA_Lib">

    <class name="Registro_evaluacion_muestra" table="public.registro_evaluacion_muestra">
        <id name="Id_registro_evaluacion" column="id_registro_evaluacion">
            <generator class="sequence" >
                <param name="sequence">registro_evaluacion_muestra_id_registro_evaluacion_seq</param>
            </generator>
        </id>
        <many-to-one name="Detalle_muestra" column="id_detalle_muestra" />
        <many-to-one name="Criterios_evaluacion_muestra" column="id_criterio_evaluacion" />
        <property name="Aprobado">
            <column name="aprobado" />
        </property>
    </class>

</hibernate-mapping>

Carlos Cocom

unread,
May 24, 2010, 4:45:03 PM5/24/10
to nhibernat...@googlegroups.com
y tu HQL que envias a NHibernate?

Sin este no se puede hacer mucho ya que ni se ve que sintaxis utilizas o los metodos. 
341.gif

Josué Ally Acuña Ruiz

unread,
May 24, 2010, 4:52:15 PM5/24/10
to nhibernat...@googlegroups.com
Ese es el punto hermano necesito convertir mi consulta sql (la de arriba) a hql para enviar a NHibernate

Diego Mijelshon

unread,
May 24, 2010, 6:57:34 PM5/24/10
to nhibernat...@googlegroups.com
Y cuál sería el objetivo de esa query?

Nuevamente, en lugar de pensar en SQL y HQL como equivalentes, deberías hacer una pequeñísima reingeniería (si es que has perdido las especificaciones) y pensar qué es lo que buscas con esa consulta en funcion de las entidades

Así de un vistazo, creo que quieres obtener una lista de "Criterios_evaluacion_muestra" que son hijos de otro "Criterios_evaluacion_muestra" con id 19, con sus correspondientes colecciones de "Registro_evaluacion_muestra"... es así?

   Diego


2010/5/24 Josué Ally Acuña Ruiz <josu...@gmail.com>
Tengo las tablas mapeadas y todo va bien

Fabio Maulo

unread,
May 25, 2010, 10:11:56 AM5/25/10
to nhibernat...@googlegroups.com
Lo que intentan decirte es que con NH, por lo general, se hacen queries sobre objetos y no sobre columnas...
En tu caso, tu query podría lucir como un simple
from Criterios_evaluacion_muestra cem where cem.Padre.id = 19

o tal vez como
from Registro_evaluacion_muestra rem join rem.Criterios_evaluacion_muestra cem where cem.Padre.id = 19

lo que es importante es saber que entidades necesitas.

2010/5/24 Josué Ally Acuña Ruiz <josu...@gmail.com>
Saludos a todos,



--
Fabio Maulo

Fabio Maulo

unread,
May 25, 2010, 10:15:00 AM5/25/10
to nhibernat...@googlegroups.com
Me olvidé el comentario personal...

Veo que aún te falta hacer el switch mental desde dos dimensiones (fila-columna) a multi dimensión (grafo de objetos).
Tenes que trabajar sobre ese aspecto.

2010/5/25 Fabio Maulo <fabio...@gmail.com>



--
Fabio Maulo

Reply all
Reply to author
Forward
0 new messages