Question

Y at-il un moyen d'utiliser Hibernate requêtes nommées dans Grails, en utilisant HQL?

J'ai lu à leur sujet dans le Harnessing Hibernate livre , et se demande si il y avait un moyen de les utiliser dans Grails.

requêtes nommées sont inclus, ainsi que les mises en correspondance de classe, dans un fichiers de mappage <class-name>.hbm.xml comme ceci:

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

Maintenant, je suis certain qu'un <class-name>.hbm.xml fichier de mappage veille prolongée peuvent être inclus et intégré dans la configuration Grails GORM comme il est indiqué ici que le hibernate.cfg.xml qui comprend les mise en veille prolongée fichier de mappage peut être utilisé dans les Grails.

Dans la vieille Hibernate et Java, il est possible d'accéder ainsi:

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

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

Mais, comment peut-on accéder à ces requêtes HQL nommées de Grails?

La raison pour laquelle je demande est que je voudrais être en mesure de prendre une base de données existante et la carte à certains objets utilisés dans Grails et stocker les requêtes nommées ainsi que les correspondances.

Était-ce utile?

La solution

The easiest way is with the withSession method on any domain class, e.g.

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

or more compactly using method chaining:

SomeDomainClass.withSession { session ->
   session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
      .setTime('length', length)
      .list()
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top