通过分页获取所有文章的最新版本

时间:2015-06-29 14:04:31

标签: liferay liferay-6

我想获得所有期刊文章的最新版本。 我对表演问题有很强的要求。

我提出了一个非常快速的查询:

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子句的方法。

我读到了这个: http://www.liferay.com/fr/documentation/liferay-portal/6.1/development/-/ai/developing-custom-sql-queries-liferay-portal-6-1-dev-guide-en

但我无法让它工作,我担心表演......

1 个答案:

答案 0 :(得分:0)

我建议您使用搜索引擎,而不是直接查询数据库。 它提供更好的性能,并提供分页。 获取最新版本(“当前”)可以使用字段'head'上的字段过滤器完成,如下所示:

searchQuery.addRequiredTerm("head", Boolean.TRUE);