在Grails中使用Hibernate HQL命名查询?
有没有一种方法可以使用HQL在Grails中使用Hibernate命名查询 我一直在读关于它们的文章,想知道是否有一种方法可以在Grails中使用它们 命名查询与类映射一起包含在在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
.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()
}