Cho*_*o87 2 grails createcriteria hibernate-criteria
我有以下表/型号:
class Post {
int id;
String comment;
static belongsTo = [category_id:Category];
}
Run Code Online (Sandbox Code Playgroud)
我希望创建一个可以过滤掉最后一个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;
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,第一步是使用HibernateCriteriaBuilder:
def c = Post.createCriteria();
def results = c.list {
projections {
groupProperty("category_id", "myid")
max("id", "version")
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题分为两部分:
如何使用结果对象获取List<Post>数组?
(喜欢的东西:def latest = Post.FindAllByXXX(result);)
是的,你走在正确的轨道上.我还要将Post 的id属性添加到我的预测中:
projections {
property('id')
}
Run Code Online (Sandbox Code Playgroud)
然后使用id收集所有帖子以获取帖子列表,例如:
def latestPosts = results?.collect{Post.read(it[0])}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2058 次 |
| 最近记录: |