Grails 中executeQuery的结果如何处理???

copoplar 2008-04-13
本人正在做一个小的项目,其中需要把数据库里的部分数据抽取出来,需要随机(所以需用到executeQuery,因为MySql提供了rand(),可以实现随机选择记录) 比如: Item.executeQuery("SELECT * FROM Item ORDER BY rand()") 这个返回结果如何处理? 我想把这个结果展示在页面上,然后进行其他的操作。 就这句都报错,说:*有问题,unexpected token: * ===== Message: unexpected token: * near line 1, column 8 [SELECT * FROM Item ORDER BY rand() ]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [SELECT * FROM Item ORDER BY rand() ] Caused by: org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: * near line 1, column 8 [SELECT * FROM Item ORDER BY rand() ]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [SELECT * FROM Item ORDER BY rand() ] Class: ItemController At Line: [88] Code Snippet: 88: item = Item.executeQuery("SELECT * FROM Item ORDER BY rand() " ) 请那位大侠帮忙啊!
copoplar 2008-04-13
查了很多的GORM文档,都没有找到如何处理 查询返回结果集如何处理的示例。
copoplar 2008-04-13
难道非得用groovy.sql.Sql ?
山风小子 2008-04-13
Item.executeQuery(...)

传入的应该是HQL语句,而非正规的SQL语句。

关于执行SQL语句,你可以参考一下:
我的一篇随笔(http://www.blogjava.net/BlueSUN/archive/2008/01/26/177945.html)
agile_boy 2008-04-13
我觉得你要么使用Hibernate的原生SQL或者直接使用GSQL
dellsoft 2008-04-14
如果想直接使用原始sql,在配置一个数据源,用新数据源来执行原始Sql
copoplar 2008-04-15
谢谢各位老师的指点,对我很有启发,特别岚关于操作excel的案例,我下一步也需要进行数据的导入导出,很有帮助。对groovy.Sql也有了一定的了解,谢谢!


今天早晨看资料,忽然我的问题有了新思路:

其实我就是需要把记录从数据库里随机抽取出来,然后展现,刚才发现有getAll();这样只要生成一个随机的数组,扔给getAll就行了,哈哈。看来有时候,有了问题需要从多个角度来考虑,不要认死理。
eg:
def a = [3,1,2]
def items = Item.getAll(a)

简单有用。