首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Liferay的DynamicQuery按另一个表排序

使用Liferay的DynamicQuery按另一个表排序
EN

Stack Overflow用户
提问于 2012-07-19 18:50:38
回答 3查看 2.9K关注 0票数 0

当我在Liferay6中进行动态查询时,我遇到了一个问题。我试图根据他们的view countJournalArticles进行排序。视图计数在另一个表(AssetEntry)中指定。

我被这个卡住了:

代码语言:javascript
复制
DynamicQuery query = DynamicQueryFactoryUtil.forClass(
JournalArticle.class, "articleParent", PortalClassLoaderUtil.getClassLoader());

//adding criterions
query.add(...);

DynamicQuery dq0 = DynamicQueryFactoryUtil.forClass(AssetEntry.class, "asset", 
PortalClassLoaderUtil.getClassLoader())
.setProjection(ProjectionFactoryUtil.property("asset.classPK"))
.add(PropertyFactoryUtil.forName("asset.companyId")
.eqProperty("articleParent.companyId"))
.add(PropertyFactoryUtil.forName("asset.groupId")
.eqProperty("articleParent.groupId"));

query.add(PropertyFactoryUtil.forName("articleParent.resourcePrimKey").in(dq0))
            .addOrder(OrderFactoryUtil.desc("asset.viewCount"));

这样一来,我得到了一条错误消息:could not resolve property: asset of: com.liferay.portlet.journal.model.impl.JournalArticleImpl

如果删除addOrder-call,此错误将消失。我应该如何添加order语句,以便主查询能够识别asset.viewCount

EN

回答 3

Stack Overflow用户

发布于 2012-07-19 21:44:16

代码语言:javascript
复制
AssetEntryQuery assetEntryQuery = new AssetEntryQuery();
assetEntryQuery.setClassName(JournalArticle.class.getName());
assetEntryQuery.setXXX //adding criterions
assetEntryQuery.setOrderByCol1("viewCount");
List<AssetEntry> assetEntries = AssetEntryServiceUtil.getEntries(assetEntryQuery);
票数 1
EN

Stack Overflow用户

发布于 2012-07-19 20:38:36

对于DynamicQuery应用程序接口,恐怕没有直接的方法可以做到这一点。

我认为你需要使用带有服务构建器的Service builder Finders,也就是Custom Query

票数 0
EN

Stack Overflow用户

发布于 2012-07-21 00:19:54

不能使用动态查询,因为没有从JournalArticle实体到AssetEntry实体的直接引用。

一种可能性是从AssetEntry表中检索文章的有序ids (基本上是dq0),然后执行另一个查询并通过编程进行排序(您已经对ids进行了排序)。

最后我觉得这句话

代码语言:javascript
复制
query.add(PropertyFactoryUtil.forName("articleParent.resourcePrimKey").in(dq0))

并不是你想的那样。resoucePrimKey是对权限资源表的引用。您需要使用id列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11559229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档