当前位置: 首页 > 面试题库 >

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

东方修谨
2023-03-14
问题内容

有没有办法使用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”的艺术品 -谢谢你的帮助