Grails 查询不使用 GORM

Posted

技术标签:

【中文标题】Grails 查询不使用 GORM【英文标题】:Grails query not using GORM 【发布时间】:2011-06-03 19:08:46 【问题描述】:

在 grails 中不使用 GORM 的最佳方式是什么?

我的查询似乎不适合 GORM 模型,该查询有一个子查询和一个计算字段。我在*** 上发帖已经没有回应,所以我决定采取不同的方法。我想在 grails 应用程序中查询不使用 GORM 的内容。有没有一种简单的方法来获取连接并遍历结果集?

【问题讨论】:

【参考方案1】:

在服务或控制器中,您可以为 dataSource bean 添加依赖注入,如果您是受虐狂,则可以直接使用 groovy.sql.Sql 或 JDBC。

import groovy.sql.Sql

class DataService 

   def dataSource

   void runQuery(...) 
      def sql = new Sql(dataSource)
      sql.eachRow('select * from foo')  row ->
         ...
      
   

【讨论】:

【参考方案2】:

在大多数情况下,我使用条件查询。

def c = Account.createCriteria()
def results = c 
    between("balance", 500, 1000)
    eq("branch", "London")
    or 
        like("holderFirstName", "Fred%")
        like("holderFirstName", "Barney%")
    
    maxResults(10)
    order("holderLastName", "desc")

【讨论】:

这不支持我所知道的子查询 @Tihon 它支持子查询,因为它是 hibernate-criteria-query docs.jboss.org/hibernate/core/3.3/reference/en/html/… @Igs GORM 不是标准查询。 Criteria 查询看起来更像 GROM 而不是 HSQL,但并不相同。 GROM 正在使用元方法,标准查询将使用休眠标准查询。 有趣。你会如何在 groovy 中做到这一点?答案更适合我的另一个问题:***.com/questions/4577379/…如果你在那里回答,我会给你正确的答案。

以上是关于Grails 查询不使用 GORM的主要内容,如果未能解决你的问题,请参考以下文章

Grails gorm 查询问题

GRAILS / GORM:动态多重连接

在Grails外部使用GORM时,找不到会话错误

Grails Gorm 查询限制

Grails GORM 查询以匹配多个关联对象

命名查询中的 Grails GORM 计数函数