gpt4 book ai didi

hibernate - 约束条件查询以获取笛卡尔积并返回结果作为对象数组列表

转载 作者:行者123 更新时间:2023-12-02 16:02:27 31 4
gpt4 key购买 nike

我有2个看起来像这样的 Realm 类:

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的意义上,这是可行的,但是我实际上希望结果是 Object[]的列表,如下所示:
Organisation1 | User1
Organisation1 | User2
Organisation1 | User3
Organisation2 | null
Organisation3 | User4

因此,在上面的示例中, Organisation1User集合中包含3个 usersOrganisation2中没有, Organisation3中包含1 User

我知道我可以通过对多个项目进行 select(例如 select organisation, user from...)使用HQL来实现此目标,但是是否可以通过标准查询来做到这一点?

编辑:

我试图通过添加以下块来应用投影:
projections {
property "users"
}

但是,我得到了一个 ArrayIndexOutOfBoundsException(也许我无法针对一个集合表达这样的投影?)

最佳答案

我想,您想使用projections:

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

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

ref-doc

关于hibernate - 约束条件查询以获取笛卡尔积并返回结果作为对象数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29164752/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com