Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Grails中使用Hibernate HQL命名查询?_Hibernate_Grails_Hql_Gorm_Named Query - Fatal编程技术网

在Grails中使用Hibernate HQL命名查询?

在Grails中使用Hibernate HQL命名查询?,hibernate,grails,hql,gorm,named-query,Hibernate,Grails,Hql,Gorm,Named Query,有没有一种方法可以使用HQL在Grails中使用Hibernate命名查询 我一直在读关于它们的文章,想知道是否有一种方法可以在Grails中使用它们 命名查询与类映射一起包含在.hbm.xml映射文件中,如下所示: <query name="com.oreilly.hh.tracksNoLongerThan"> <![CDATA[ from Track as track where track.playTime <= :le

有没有一种方法可以使用HQL在Grails中使用Hibernate命名查询

我一直在读关于它们的文章,想知道是否有一种方法可以在Grails中使用它们

命名查询与类映射一起包含在
.hbm.xml
映射文件中,如下所示:

<query name="com.oreilly.hh.tracksNoLongerThan">
   <![CDATA[
         from Track as track
           where track.playTime <= :length
     ]>
</query>
但是,如何从Grails访问这些HQL命名的查询呢


我问这个问题的原因是,我希望能够获取一个遗留数据库并将其映射到一些对象,以便在Grails中使用,并将命名查询与映射一起存储。

最简单的方法是在任何域类上使用
with session
方法,例如

SomeDomainClass.withSession { session ->
   Query query = session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
   query.setTime 'length', length
   query.list()
}
或者更紧凑地使用方法链接:

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

另外,我已经在Grails文档中看到了对命名查询的引用。。。
SomeDomainClass.withSession { session ->
   session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
      .setTime('length', length)
      .list()
}