Frage

Gibt es eine Möglichkeit, Hibernate -benannte Abfragen in Grails mit HQL zu verwenden?

Ich habe über sie in der gelesen Hibernate -Buch nutzen, und fragte sich, ob es eine Möglichkeit gab, sie in Grals zu verwenden.

Benannte Abfragen sind zusammen mit den Klassenzuordnungen in a enthalten <class-name>.hbm.xml Zuordnen von Dateien wie SO:

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

Jetzt bin ich mir sicher, dass ein <class-name>.hbm.xml Hibernate -Mapping -Datei Kann in die GRAILS GORM -Konfiguration eingeschlossen und integriert werden Es wird hier angegeben dass die hibernate.cfg.xml welches die Hibernate -Mapping -Datei kann innerhalb von Grals eingesetzt werden.

In Old Hibernate und Java kann auf diese Weise zugegriffen werden:

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

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

Aber wie kann man auf diese von HQL benannten Abfragen von Grails zugreifen?

Der Grund, warum ich frage, ist, dass ich gerne eine Legacy -Datenbank nehmen und einige Objekte für die Verwendung in Grails zuordnen und die benannten Abfragen zusammen mit den Zuordnungen speichern kann.

War es hilfreich?

Lösung

Der einfachste Weg ist mit dem withSession Methode in jeder Domänenklasse, z. B.

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

oder kompakte Verwendung von Methodenverkettung:

SomeDomainClass.withSession { session ->
   session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
      .setTime('length', length)
      .list()
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top