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

Liferay 通过分页获取所有文章的最新版本,liferay,liferay-6,Liferay,Liferay 6,我想得到所有期刊文章的最新版本。 在性能问题上我有很高的要求 我提出了一个非常快速的问题: SELECT articleId, MAX(version) as currentVersion FROM mf3_liferay.journalarticle GROUP BY articleId HAVING currentVersion; 我非常喜欢动态查询: DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(J

我想得到所有期刊文章的最新版本。 在性能问题上我有很高的要求

我提出了一个非常快速的问题:

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

我读到:


但是我不能让它工作,我担心性能…

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

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

请您指定您正在使用的数据库好吗?哪些数据库不工作?是否获得任何异常或未获得所需的输出?什么如果需要执行SQL查询,自定义SQL是一种方法。谢谢,我正在使用Mysql 5。6@PrakashK:我没有例外,只是想不出如何在不获取所有数据库的情况下获取所有文章的最新版本,正如我在网上看到的那样,您的自定义sql是可以的。您可以在其中包含分页,以避免获取所有记录。您还可以获取Journal文章实例,而不仅仅是两个字段。我认为您应该看看web内容列表portlet(因为您使用的是Liferay 6.1),它实现了您想要做的事情。