在Grails中使用Hibernate HQL命名查询?
有没有办法使用HQL在Grails中使用hibernate命名查询?
我已经在《利用hibernate》一书中阅读了有关它们的内容,想知道是否有办法在Grails中使用它们。
<class-name>.hbm.xml
像这样的映射文件中包含命名查询以及类映射:
<query name="com.oreilly.hh.tracksNoLongerThan"> <![CDATA[
from Track as track
where track.playTime <= :length
]>
</query>
现在,我确定可以包含一个<class-name>.hbm.xml
hibernate映射文件, 并将其集成到Grails
GORM配置中,因为在此声明hibernate.cfg.xml
,包含
hibernate映射文件的 可以在Grails中使用。
在旧的Hibernate和Java中,可以通过以下方式访问它:
...Query query = session.getNamedQuery(
"com.oreilly.hh.tracksNoLongerThan");
query.setTime("length", length);
return query.list();
...
但是,如何从Grails访问这些以HQL命名的查询?
我问的原因是我希望能够使用旧数据库并将其映射到在Grails中使用的某些对象,并将命名查询与映射一起存储。
回答:
最简单的方法是使用withSession
任何域类上的方法,例如
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中使用Hibernate HQL命名查询? 的全部内容, 来源链接: utcz.com/qa/404146.html