gpt4 book ai didi

Grails:使用条件+投影的结果作为原始表的过滤器

转载 作者:行者123 更新时间:2023-12-03 03:25:08 25 4
gpt4 key购买 nike

我有以下表格/模型:

class Post {
int id;
String comment;
static belongsTo = [category_id:Category];
}

我希望创建一个可以过滤掉最后一个 Post 的查询(最高 id )每 Category 。我想要 List<Post> 中的结果表格。

换句话说(我相信)在 SQL 中查询将如下所示:

SELECT *
FROM
Post AS source
JOIN (
SELECT MAX(id) AS id, category_id
FROM Post
GROUP BY category_id
) AS filter
ON source.id = filter.id;

如果我理解正确的话,第一步是使用 HibernateCriteriaBuilder :

def c = Post.createCriteria();
def results = c.list {
projections {
groupProperty("category_id", "myid")
max("id", "version")
}
}

所以我的问题分为两部分:

  1. 我走的路正确吗?

  2. 如何使用结果对象来获取List<Post>数组?

    (类似于:def latest = Post.FindAllByXXX(result);)

最佳答案

是的,您走在正确的道路上。我还将帖子的 id 属性添加到我的投影中:

projections {
property('id')
}

然后使用id收集所有帖子以获取帖子列表,例如:

def latestPosts = results?.collect{Post.read(it[0])}

关于Grails:使用条件+投影的结果作为原始表的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041738/

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