0

我的最终目标是我想获得可以显示我的文章(或任何类型的条目,如果可能的话)的 plid 和 portletId。

我有 sql 查询返回任何可用于显示我的文章的 portlet。但是当我必须使用 dynamicQuery 来获得相同的结果时,我遇到了 xPath 和数组比较的问题,请帮忙!

SELECT * FROM portletpreferences pr
WHERE pr.preferences != '<portlet-preferences />' AND pr.ownerid = 0 AND pr.portletid ilike '%_INSTANCE_%' AND pr.plid IN(
    SELECT layout.plid FROM layout 
          WHERE layout.type_ = 'portlet' AND layout.groupid = 19 AND layout.hidden_ is false)
AND pr.portletpreferencesid IN (
        SELECT pr.portletpreferencesid FROM portletpreferences pr
          WHERE 'true' = ANY(xpath('//preference[name="anyAssetType"]/value/text()', XMLPARSE(DOCUMENT pr.preferences))::text[])
               OR (SELECT (array(SELECT id_ FROM journalstructure))::text[]) &&  xpath('//preference[name="classTypeIds"]/value/text()', XMLPARSE(DOCUMENT pr.preferences))::text[] )
4

2 回答 2

0

如果您一心想要使用相同的查询,那么Custom-SQL通过创建自定义查找器而不是使用DynamicQuery. 这将为您直接使用任何类型的 SQL 查询提供很大的灵活性。

我不认为这个查询可以转换DynamicQuery

于 2012-08-13T10:39:09.103 回答
0

DynamicQuery 非常强大,请参阅我的回答如何查找具有特定 JournalArticles 的布局。我认为您的要求与此类似: Liferay: How to find all Layouts with the specific JournalArticle in AssetPublisher portlet?

于 2012-08-20T13:53:08.553 回答