<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Liferay 7.2 - How to DynamicQuery two categories</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=118969270" />
  <subtitle>Liferay 7.2 - How to DynamicQuery two categories</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=118969270</id>
  <updated>2026-04-05T10:46:47Z</updated>
  <dc:date>2026-04-05T10:46:47Z</dc:date>
  <entry>
    <title>Liferay 7.2 - How to DynamicQuery two categories</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118969269" />
    <author>
      <name>Fabio Carvalho</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=118969269</id>
    <updated>2020-04-17T15:19:34Z</updated>
    <published>2020-04-17T15:19:34Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hello,&lt;br&gt;&lt;br&gt;I have been doing a DynamicQuery to get the JournalArticles of some categories like this:&lt;br&gt;&lt;pre&gt;&lt;code&gt;private List&amp;lt;journalarticle&amp;gt; getJournalArticles(Long categoryId1, Long categoryId2) {
&amp;amp;nbsp; &amp;amp;nbsp; List&amp;lt;long&amp;gt; categoryIds = new ArrayList&amp;lt;long&amp;gt;();
&amp;amp;nbsp; &amp;amp;nbsp; if (categoryId1 != null) categoryIds.add(categoryId1);
&amp;amp;nbsp; &amp;amp;nbsp; if (categoryId2 != null) categoryIds.add(categoryId2);

&amp;amp;nbsp; &amp;amp;nbsp; DynamicQuery assetEntryAssetCategoryRelQuery = AssetEntryAssetCategoryRelLocalServiceUtil.dynamicQuery();
&amp;amp;nbsp; &amp;amp;nbsp; assetEntryAssetCategoryRelQuery.add(PropertyFactoryUtil.forName(Field.ASSET_CATEGORY_ID).in(categoryIds));
&amp;amp;nbsp; &amp;amp;nbsp; assetEntryAssetCategoryRelQuery.setProjection(ProjectionFactoryUtil.property("assetEntryId"));

&amp;amp;nbsp; &amp;amp;nbsp; List&amp;lt;long&amp;gt; assetEntryAssetCategoryRelIds = AssetEntryAssetCategoryRelLocalServiceUtil.dynamicQuery(assetEntryAssetCategoryRelQuery);
&amp;amp;nbsp; &amp;amp;nbsp; if (assetEntryAssetCategoryRelIds.isEmpty()) return Collections.emptyList();
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; DynamicQuery assetEntryQuery = AssetEntryLocalServiceUtil.dynamicQuery();
&amp;amp;nbsp; &amp;amp;nbsp; assetEntryQuery.add(PropertyFactoryUtil.forName(Field.CLASS_NAME_ID).eq(PortalUtil.getClassNameId(JournalArticle.class.getName())));
&amp;amp;nbsp; &amp;amp;nbsp; assetEntryQuery.add(PropertyFactoryUtil.forName("entryId").in(assetEntryAssetCategoryRelIds));
&amp;amp;nbsp; &amp;amp;nbsp; assetEntryQuery.setProjection(ProjectionFactoryUtil.property(Field.CLASS_PK));
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; List&amp;lt;long&amp;gt; assetEntryIds = AssetEntryLocalServiceUtil.dynamicQuery(assetEntryQuery);&amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; if (assetEntryIds.isEmpty()) return Collections.emptyList();
&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp; DynamicQuery journalArticleQuery = JournalArticleLocalServiceUtil.dynamicQuery();
&amp;amp;nbsp; &amp;amp;nbsp; journalArticleQuery.add(PropertyFactoryUtil.forName(Field.STATUS).eq(WorkflowConstants.STATUS_APPROVED));
&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;journalArticleQuery.add(PropertyFactoryUtil.forName("resourcePrimKey").in(assetEntryIds));
&amp;amp;nbsp; &amp;amp;nbsp; journalArticleQuery.addOrder(OrderFactoryUtil.desc("modifiedDate"));

&amp;amp;nbsp;   List&amp;lt;journalarticle&amp;gt; journalArticles = JournalArticleLocalServiceUtil.dynamicQuery(journalArticleQuery);
    return journalArticles.isEmpty() ? Collections.emptyList() : journalArticles;
}&amp;lt;/journalarticle&amp;gt;&amp;lt;/long&amp;gt;&amp;lt;/long&amp;gt;&amp;lt;/long&amp;gt;&amp;lt;/long&amp;gt;&amp;lt;/journalarticle&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;Ok, so this is returning the JournalArticles with the categoryId1 and also the JournalArticles of the categoryId2. But what I really want is, in case the categoryId1 and categoryId2 are both not null, I want to query all the JournalArticles that have both categories!&lt;br&gt;&lt;br&gt;Lets suppose that the categoryId1 is 10001 and categoryId2 is 10002. I want to get all the JournalArticle that have both categories (10001 and 10002). I am not sure on how to make this query. Can anyone help me with this?&lt;br&gt;&lt;br&gt;Thanks in advance!&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Fabio Carvalho</dc:creator>
    <dc:date>2020-04-17T15:19:34Z</dc:date>
  </entry>
</feed>
