gpt4 book ai didi

sorting - 通过3个类对多对多进行排序:按关系数排序

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

假设我们有3个 Realm 类:2个类通过第3个类相互关联。

好的,一些代码:

class A {
String subject
String description

static hasMany = [cs: C]

static transients = ['numberOfCs']

Long getNumberOfCs() {
return cs.size()
}
}

class B {
String title
}

class C {
A objectA
B objectB

static belongsTo = [a: A]
}

很清楚吗?希望如此。这与我的域完美配合。

您可以看到临时属性numberOfCs,该属性用于计算与我的A对象相关的C实例的数量。而且效果很好。

问题是:列出我所有的A对象,我想按与C对象的关系数对其进行排序,但是瞬时属性numberOfCs不能用于范围。

我该如何处理?我该如何告诉GORM按numberOfCs排序As列表,因为这将是一个常规(非 transient )字段?

提前致谢。

最佳答案

我不确定Grails的标准是否支持这一点,因为您既需要选择A对象本身,又需要由子对象聚合(C)。这意味着将按A的所有字段进行分组,但不会自动进行分组。

如果只需要A中的某些字段,则可以按它们分组:

def instances = A.withCriteria {
projections {
groupProperty('subject')
count('cs', 'cCount')
}
order 'cCount'
}

否则,您将只需要检索 id并进行第二次查询,例如 in this question

另一种方法是像描述的​​ derived properties一样使用 here(虽然不确定它是否会起作用):
class A {
static mapping = {
numberOfCs formula: 'select count(*) from C where c.b_id = id'
}
}

关于sorting - 通过3个类对多对多进行排序:按关系数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12280957/

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