【问题标题】:Grails 2.5.0 - metaParams on Set?Grails 2.5.0 - 设置元参数?
【发布时间】:2015-09-18 01:31:50
【问题描述】:

我有以下课程:

class User {
...
static hasMany = [data: MyData]
...
}

我想获取用户对象上的 user.data,但使用元参数过滤返回的列表,如 findAllBy (https://grails.github.io/grails-doc/latest/ref/Domain%20Classes/findAllBy.html)。

这可能吗?

【问题讨论】:

  • 您想编写一个条件查询来执行此操作还是与 java.util.List 等效?
  • 我希望会有类似 user.data.filter([max: 10, sort: "title", order: "desc", offset: 100]) 的东西。这是否存在,还是我需要条件查询?
  • 不,该方法不存在。您可以使用带有投影的条件查询,或使用各种 Groovy 集合方法在列表上实现等效操作。

标签: grails grails-orm


【解决方案1】:

使用条件查询,您可以执行以下操作:

def id = /* some User.id here */

// http://grails.github.io/grails-doc/2.1.0/ref/Domain%20Classes/createCriteria.html
def data = User.createCriteria().list(max: 10, offset: 100) {
    projections {
        property 'data'
    }

    eq 'id', id

    order 'something', 'desc'
}

如果您最终得到重复的 MyData 实例,请尝试改用 HQL。像这样:

// https://grails.github.io/grails-doc/latest/ref/Domain%20Classes/executeQuery.html
User.executeQuery 'select distinct u.data from User as u where u.id = :id', [id: id, max: 10, offset: 5]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2015-09-10
    相关资源
    最近更新 更多