У меня есть следующая таблица/модель:Grails: Использование результатов Критериев + проекции как фильтр на исходной таблице
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")
}
}
Так мой вопрос состоит из двух частей:
- Я нахожусь на правильном пути?
Как использовать объект результатов для получения массива
List<Post>
?(что-то вроде:
def latest = Post.FindAllByXXX(result);
)
Совершенных , Благодаря! – Chopo87