Search code examples
javaliferayliferay-7dynamicquery

How to query last version of JournalArticle with DynamicQuery in Liferay 7.2


I have the following query in my code:

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)

But this is returning all versions of the JournalArticle. My question is: how can I query only the latest version of the JournalArticle using the previous query?

I have posted this in the Liferay Foruns but I didn't get any response yet.


Solution

  • I have found out that if you use the "search" method and pass the "version" parameter as null, you get only the latest versions of the 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)
    );