Grails FindAll Order不工作HQL

时间:2014-10-30 14:37:39

标签: hibernate grails sql-order-by hql findall

当我写这个hql时:

tempDocs = Document.findAll("FROM Document where docName LIKE :docn ORDER BY status asc",[docn:string],[max:limit, offset:startIndex])

是正常的。 但是当我试图通过写

来概括它时
tempDocs = Document.findAll("FROM Document where docName LIKE :docn",[docn:string],[max:limit, offset:startIndex,sort:column,order:ordering])

这似乎没有给出正确的顺序。这里出了什么问题?

2 个答案:

答案 0 :(得分:0)

根据findAll的文档,queryParams只有三个选项:max,offset,cache。作为两个示例之间的混合,您可以提供排序和顺序作为命名参数。

tempDocs = Document.findAll("FROM Document where docName LIKE :docn ORDER BY :sort :order",[docn:string],[max:limit, offset:startIndex,sort:column,order:ordering])

答案 1 :(得分:0)

对我来说,th3morg的解决方案导致了以下异常:

类     org.hibernate.hql.internal.ast.QuerySyntaxException 信息     意外的令牌::第1行第89列[FROM receiptbucketserver.Receipt where project.customer.id =:customerId ORDER BY:sort:order]

我的语法看起来像这样(可能是错的,我不是专家)     Receipt.findAll(" FROM Receipt where project.customer.id =:customerId ORDER BY:sort:order",[customerId:customer.id],[sort:column,order:ordering])

我能够让它看起来非常难看:

Receipt.findAll("from Receipt as r where r.project.customer.id = :companyId ORDER BY " +  field + " " + sortOrder   , [companyId: customer.id] )

呼叫:

def listReceipts = receiptHelperService.getReceiptsByCustomer(customerInstance, "vendor", "desc")