有没有办法使用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()
}
问题内容: 在命名查询的where子句中可能有一个like?我正在尝试执行以下操作,但出现异常 我尝试像在普通SQL中那样添加%,但是得到了异常编译。 任何指针,不胜感激! 谢谢 问题答案: 您不能在中添加%,但可以在为其分配参数的值中包含它。 如:
问题内容: 我正在尝试将我的命名查询放入orm.xml(与persistence.xml一起放入META-INF中),但是hibernate / jpa似乎忽略了我的orm.xml。 当我尝试使用em.createNamedQuery(“ myQuery”)创建命名查询时,它返回找不到该查询的信息。 我使用注释,我想在orm.xml中外部化我的命名查询(仅此)。 这是我的persistence.x
问题内容: 我对sql中的别名有疑问和疑问。如果我想在同一查询中使用别名,可以使用它。例如:考虑表名xyz与列a和b 这有可能吗? 问题答案: 您是在谈论给查询中的表达式赋予标识符,然后在查询的其他部分重用该标识符吗? 在Microsoft SQL Server中这是不可能的,而我几乎所有的SQL经验都仅限于此。但是您可以执行以下操作。 显然,该示例并不是特别有用,但是如果您在多个地方使用该表达式
我研究了应该是某种命名参数或主机变量(DB2),但没有找到类似的示例来说明我正在尝试的操作。我只使用过来使用来设置一个参数,据我所知,这个参数是针对JPQL的。因为我在这里尝试的是本机SQL查询,所以不确定这是否可以工作。 [错误]~2019-09-19-07.26.30.347 CDT~~~~O.A.C.C.C.[.[.[.[.[dispatcherServlet]servlet.Service
问题内容: 我正在尝试在grails服务中使用g.render,但默认情况下似乎未将g提供给服务。有没有办法让模板引擎在服务中呈现视图?我可能会以错误的方式进行操作。我要寻找的是将视图从部分模板渲染为字符串,并将结果字符串作为JSON响应的一部分发送回去,以与AJAX更新一起使用。 有什么想法吗? 问题答案: 我完全同意John的观点-在服务中执行GSP通常是一个错误的设计决策。但是没有规则没有例
我有一个名为ArtWork的实体,该实体具有属性列表 样式具有称为标题的属性 我需要一个Hibernate查询,返回所有具有style title=“Abstract”的艺术品 -谢谢你的帮助