如何使用链式命名查询获取PagedResultList并添加其他条件闭包?

时间:2012-11-07 10:46:50

标签: grails gorm criteria

我正在尝试使用链式命名查询获取pagedResultList,但我似乎失败了。 关于如何实现这一目标的任何提示或提示?

请参阅Grails文档中的修改示例,该文档应说明我的需求

def books = Publication.recentPublications.grailsInTitle.list(params) {
    or {
        like 'author', 'Tony%'
        like 'author', 'Phil%'
    }
}

这总是返回一个ArrayList ..

当删除其他条件时,如下所示使用

def books = Publication.recentPublications.grailsInTitle.list(params)

我想添加一些标准闭包,关于如何实现这一目标的任何提示或提示?

1 个答案:

答案 0 :(得分:2)

我遇到了与命名查询相同的问题。这是我的解决方案应用于您的课程。评论它是否适合你。

class Publication {
    //fields, constraints, etc.
    namedQueries = {
        authoredLike { String authorName ->
        if (authorName) {
            like 'author', authorName
        }
        // untested, but you get the point, please experiment
        authoredLikeMany { List<String> authors ->
            authors.each { String authorName -> like 'author', authorName }
        }
    }
}

def tonyBooks = Publication.recentPublications.grailsInTitle.authoredLike('Tony%').list(params)
def tonyAndPhilBooks = Publication.recentPublications.grailsInTitle.authoredLikeMany(['Tony%', 'Phil%']).list(params)