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)

  简单有用。
aliciaking 2009-05-05
grails自动生成的数据库表中的id字段,在删除了一个条目后,id就不是连续的了,会有空缺……考虑到这个就稍有麻烦。这个楼主是怎么解决的?
loong_lang 2009-05-08
def list = BugInfo.executeQuery("FROM BugInfo ORDER BY rand()")
这里list就是BugInfo的列表,没有什么特别的
copoplar 2009-05-21
还是hql不好啊!谢谢!
Global site tag (gtag.js) - Google Analytics