我想获得所有期刊文章的最新版本。 我对表演问题有很强的要求。
我提出了一个非常快速的查询:
SELECT
articleId,
MAX(version) as currentVersion
FROM mf3_liferay.journalarticle
GROUP BY articleId
HAVING currentVersion;
我对动态查询很苛刻:
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(JournalArticle.class);
dynamicQuery.add(RestrictionsFactoryUtil.eq("status", 0))
.addOrder(OrderFactoryUtil.desc("version"))
.setLimit(cur, cur + resultsByPage);
dynamicQuery.setProjection(ProjectionFactoryUtil.groupProperty("version"));
我找不到添加Having子句的方法。
但我无法让它工作,我担心表演......
答案 0 :(得分:0)
我建议您使用搜索引擎,而不是直接查询数据库。 它提供更好的性能,并提供分页。 获取最新版本(“当前”)可以使用字段'head'上的字段过滤器完成,如下所示:
searchQuery.addRequiredTerm("head", Boolean.TRUE);