加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Grails findAll有sort,order,max和offset吗?

发布时间:2020-12-14 16:33:41 所属栏目:大数据 来源:网络整理
导读:我想在findAll查询中集成sort,order,max和offset.以下工作正常: def books = Book.findAll("from Book as b where b.approved=true order by b.dateCreated desc",[max: max,offset: offset]) 但我想要的是: def books = Book.findAll("from Book as b whe
我想在findAll查询中集成sort,order,max和offset.以下工作正常:

def books = Book.findAll("from Book as b where b.approved=true order by b.dateCreated  desc",[max: max,offset: offset])

但我想要的是:

def books = Book.findAll("from Book as b where b.approved=true",[sort: 'dateCreated',order: 'desc',max: max,offset: offset])

这不起作用.我该怎么重写呢?

解决方法

HQL不支持排序和顺序作为参数,因此您需要在“HQL表达式”中包含“order by”

def books = Book.findAll("from Book as b where b.approved=true"
  + " order by b.dateCreated desc",offset: offset])

(或者在这种情况下只使用Book.findAllByApproved(true,[…])而不是HQL).

因此,如果排序和顺序是变量,你需要一个技巧

def books = Book.findAll("from Book as b where b.approved=true"
  + (params.sort ? " order by b.${params.sort} ${params.order}" : ''),offset: offset])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读