Gails标准查询以获取笛卡尔积并将结果作为对象数组列表返回

时间:2015-03-20 10:48:24

标签: hibernate grails gorm

我有2个域类,如下所示:

class Organisation {
    String name

    static hasMany = [users: User]
}

class User {
    String emailAddress

    static belongsTo = [organisation: Organisation]
}

我想创建一个条件查询,返回这些的笛卡尔积。

我的标准关闭如下:

    def criteriaClosure = {
        and {
            createAlias('users', 'u', CriteriaSpecification.LEFT_JOIN)

            eq('someProperty', 'someValue')
            //...
        }
    }

这是有效的,因为结果列表包含Organisation集合中每个元素的users,但我实际上希望结果是{{1}的列表像这样:

Object[]

因此,在上面的例子中,Organisation1 | User1 Organisation1 | User2 Organisation1 | User3 Organisation2 | null Organisation3 | User4 Organisation1集合中有3个Userusers没有,Organisation2有1 {{1} }}

我知道我可以通过Organisation3多个项目(例如User)使用HQL来实现这一目标,但是有一些方法可以使用条件查询吗?

编辑:

我尝试通过添加此块来应用投影:

select

然而,我得到一个select organisation, user from...(也许我无法对一个集合表达这样的投影?)

1 个答案:

答案 0 :(得分:0)

我想,你想使用projections

    def criteriaClosure = {
        projections{
          property 'name'
          property 'emailAddress' // maybe 'user.emailAddress'
        }
        and {
            createAlias('users', 'u', CriteriaSpecification.LEFT_JOIN)

            eq('someProperty', 'someValue')
            //...
        }
    }

请参阅ref-doc