首页 > 解决方案 > 如何在 Liferay 7.2 中使用 DynamicQuery 查询 JournalArticle 的最新版本

问题描述

我的代码中有以下查询:

DynamicQuery journalArticleDynamicQuery = JournalArticleLocalServiceUtil.dynamicQuery();

journalArticleDynamicQuery.add(PropertyFactoryUtil.forName("DDMStructureKey").eq("MY_STRUCTURE")); 
journalArticleDynamicQuery.add(PropertyFactoryUtil.forName(Field.GROUP_ID).eq(groupId));
journalArticleDynamicQuery.add(PropertyFactoryUtil.forName(Field.FOLDER_ID).eq(folderId));
journalArticleDynamicQuery.add(PropertyFactoryUtil.forName(Field.STATUS).eq(0));
journalArticleDynamicQuery.addOrder(OrderFactoryUtil.desc(Field.DISPLAY_DATE));

JournalArticleLocalServiceUtil.dynamicQuery(journalArticleDynamicQuery, 0, 30)

但这将返回 JournalArticle 的所有版本。我的问题是:如何使用以前的查询只查询最新版本的 JournalArticle?

我已经在Liferay Foruns上发布了这个,但我还没有得到任何回应。

标签: javaliferayliferay-7dynamicquery

解决方案


我发现如果您使用“搜索”方法并将“版本”参数传递为 null,您将只能获得最新版本的 JournalArticle:

List<JournalArticle> journalArticles = JournalArticleLocalServiceUtil.search(
    themeDisplay.getCompanyId(), 
    themeDisplay.getScopeGroupId(), 
    folderIds,
    JournalArticleConstants.CLASSNAME_ID_DEFAULT,
    null,
    null,
    null,
    null,
    null,
    "MY_STRUCTURE",
    null,
    myDate,
    null,
    0,
    null, 
    true,
    startIndex,
    endIndex,
    OrderByComparatorFactoryUtil.create("JournalArticle", Field.DISPLAY_DATE, false)
);

推荐阅读