gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:54:00 25 4
gpt4 key购买 nike

有没有办法使用 HQL 在 Grails 中使用 Hibernate 命名查询?

我一直在 Harnessing Hibernate book 中阅读有关它们的信息,并想知道是否有办法在 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 映射文件 可以作为 it is stated here 包含并集成到 Grails GORM 配置中那hibernate.cfg.xml其中包括可在 Grails 中使用的hibernate 映射文件

在旧的 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()
}

关于hibernate - 在 Grails 中使用 Hibernate HQL 命名查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com