Grails 条件搜索
我在数物品时遇到了一些问题 想象一下下面的域类Grails 条件搜索,grails,gorm,hibernate-criteria,Grails,Gorm,Hibernate Criteria,我在数物品时遇到了一些问题 想象一下下面的域类 class Book { String name } class Author { String name static hasMany = [books:Book] } 如何获得按图书数量排序的作者列表? 以下是我的尝试: def c = Author.createCriteris() c.list { projections { count 'books', 'numBooks' groupProperty '
class Book {
String name
}
class Author {
String name
static hasMany = [books:Book]
}
如何获得按图书数量排序的作者列表?
以下是我的尝试:
def c = Author.createCriteris()
c.list {
projections {
count 'books', 'numBooks'
groupProperty 'id'
}
order 'numBooks', 'desc'
}
但不知怎的,我只得到了无法使用的结果。。。我不知道如何将Author对象加入到rsult列表中-(我还没有试过,但是你不能做一些类似于:
class Author {
String name
static hasMany = [books:Book]
static namedQueries = {
sortByMostBooks {
books {
order('size', 'desc')
}
}
}
}
然后通过名为query的清理器获得访问权限
Author.sortByMostBooks.list();
此外,您可能希望在Book domain类中包含一个belongsTo:
static belongsTo = Author;
或:
如果一本书可能有多个作者那么你会得到一些东西
我仍然不知道如何使用一个标准,但通过切换到HQL,我成功了
因此,如果有人提出了标准解决方案,他仍然会因为正确答案而获得奖金:-)
我的问题是:
Author.executeQuery("""
select
a, size(a.books) as numBooks
from
Author a
group by
id
order by
numBooks DESC
""",[max:20])
这个查询效率不高,因为它在一个循环中获取所有作者,但现在还可以。Thanx。命名查询是一个好主意,但它仍然使用条件生成器。“大小”似乎不是正确的语法。。。
Author.executeQuery("""
select
a, size(a.books) as numBooks
from
Author a
group by
id
order by
numBooks DESC
""",[max:20])