Domanda

C'è un modo per utilizzare Hibernate Named Query in Grails, utilizzando HQL?

Ho letto su di loro nel Sfruttare Hibernate libro , e si chiese se c'era un modo di utilizzarli in Grails.

query denominate sono inclusi, insieme con le mappature di classe, in un <class-name>.hbm.xml file di mapping in questo modo:

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

Ora sono certo che un <class-name>.hbm.xml file di mapping Hibernate possono essere inclusi e integrati nella configurazione Grails GORM come si afferma qui che il hibernate.cfg.xml che comprende il ibernazione file di mapping può utilizzato entro Grails.

Nella vecchia Hibernate e Java si può accedere in questo modo:

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

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

Ma, come si può accedere a questi HQL denominate query da Grails?

Il motivo che mi chiedo è che vorrei essere in grado di prendere un database legacy e la mappa di alcuni oggetti per l'uso in Grails, e memorizzare le query denominate con le mappature.

È stato utile?

Soluzione

Il modo più semplice è con il metodo withSession su qualsiasi classe di dominio, per esempio.

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

o in modo più compatto con il metodo concatenamento:

SomeDomainClass.withSession { session ->
   session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
      .setTime('length', length)
      .list()
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top