grails - 标准搜索

标签 grails grails-orm 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 'id'
  }
  order 'numBooks', 'desc'
}

但不知怎的,我只得到了无法使用的结果...而且我不知道如何将 Author 对象加入到结果列表中...:-(

最佳答案

还没有尝试过,但你不能这样做:

class Author {

    String name
    static hasMany = [books:Book]

    static namedQueries = {
        sortByMostBooks {
            books {
                order('size', 'desc')
            }
        }
    }
}

然后通过清洁器命名查询获取访问权限

Author.sortByMostBooks.list();

此外,您可能希望在 Book 域类中包含一个 ownTo:

static belongsTo = Author;

或者:

static belongsTo = [authors:Author];

如果一本书可能有多个作者

关于grails - 标准搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10955716/

相关文章:

grails - grails 2.0-建议使用Jetty 7或Jetty 8?

grails - 为什么未刷新的域对象在丢弃后不恢复到它们的 "saved"状态?我可以获得 "clean"版本吗?

Grails addTo* 说明

hibernate 条件按子属性分组

java - Hibernate Criteria 中最多有两个日期列

validation - 在Grails中使用最小约束验证Double属性时接收HTTP 404

grails - 如何在grails中使用事件推送插件

grails - 我是否需要在Linux服务器上安装Tomcat和MySQL才能部署Grails应用程序?

grails - 在 Grails 域类中使用继承

java - Hibernate Criteria 加入最新状态和过滤结果