Pregunta

¿Hay alguna forma de usar consultas con nombre de hibernación en grases, usando HQL?

He estado leyendo sobre ellos en el Aprovechando el libro hibernado, y se preguntó si había una manera de usarlos en gros.

Se incluyen consultas con nombre, junto con las asignaciones de clase, en un <class-name>.hbm.xml Mapeo de archivos como así:

<query name="com.oreilly.hh.tracksNoLongerThan">
   <![CDATA[
         from Track as track
           where track.playTime <= :length
     ]>
</query>

Ahora estoy seguro de que un <class-name>.hbm.xml Archivo de asignación de hibernado se puede incluir e integrarse en la configuración de GRAILS GORM como se dice aquí que el hibernate.cfg.xml que incluye el Archivo de asignación de hibernado puede usarse dentro de los gras.

En Old Hibernate y Java se puede acceder de esta manera:

    ...
Query query = session.getNamedQuery(
                "com.oreilly.hh.tracksNoLongerThan");

query.setTime("length", length);
return query.list();
    ...

Pero, ¿cómo se puede acceder a estas consultas con nombre de HQL de Grails?

La razón por la que pregunto es que me gustaría poder tomar una base de datos heredadas y asignarla a algunos objetos para usar en gros, y almacenar las consultas con nombre junto con las asignaciones.

¿Fue útil?

Solución

La forma más fácil es con el withSession Método en cualquier clase de dominio, por ejemplo

SomeDomainClass.withSession { session ->
   Query query = session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
   query.setTime 'length', length
   query.list()
}

o más compacto utilizando el encadenamiento del método:

SomeDomainClass.withSession { session ->
   session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
      .setTime('length', length)
      .list()
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top