我的最终目标是获得可以显示我的文章的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[] )发布于 2012-08-13 18:39:09
如果您坚持使用相同的查询,那么通过创建自定义查找器而不是使用DynamicQuery,在liferay中直接使用此查询与Custom-SQL。这将为您在直接使用任何类型的SQL查询时提供很大的灵活性。
我不认为这个查询可以转换成DynamicQuery,但是如果你设法转换它,那么请在这里发布它:-)
发布于 2012-08-20 21:53:09
DynamicQuery非常强大,参见我的答案如何使用特定的JournalArticles查找布局。我认为您的需求类似于这个:Liferay: How to find all Layouts with the specific JournalArticle in AssetPublisher portlets?
https://stackoverflow.com/questions/11895434
复制相似问题