java - 获取 Grails 中最受欢迎的项目

标签 java grails groovy

我在 grails 中的简化域模型是这样的:

Article {
    Integer totalViews
    static hasMany = [
        ratings: Rating
    ]
}

Rating {
    Integer value // 1 to 5
    User user
}

我试图根据总浏览量和评分找到 5 篇最受欢迎的文章,例如浏览量权重为 25%,评分权重为 75%。

你会如何在 Groovy/Grails 中做到这一点?

最佳答案

我可能会尝试使用 HQL 查询,criteriaBuilder 版本会非常复杂。

我不确定您想要的权重的最佳算法是什么。但如果没有这个,你需要类似的东西:

from Article a order by avg(a.ratings.value) desc, a.totalViews desc

然后将查询限制为 5 个结果

Article.executeQuery('from Article...', max:5)

关于java - 获取 Grails 中最受欢迎的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2051311/

相关文章:

java - 无法使用比较器对 null 进行排序

gradle - 将iOS/Android Groovy Gradle文件转换为Kotlin-getBinary,getProperty(+文字属性)?

grails - Gradle 项目/任务依赖和 JavaScript 库在 war 中

grails - IntelliJ IDEA 不会加载在我的磁盘上找到的 Groovy

mysql - 如何将两个 grails 应用程序部署到独立数据库中的 cloudfoundry

grails - 将外部JAR添加到Grails应用程序

html - 如何合并 g :link into an ordinary button?

java - MotionEvents 未触发

java - 使用java从字符串中找到整数第一次出现的索引

java - 如何在没有文本框的情况下在 Selenium 中上传文件