【问题标题】:Delete all JournalContent versions programmatically以编程方式删除所有 JournalContent 版本
【发布时间】:2019-01-21 12:37:53
【问题描述】:

我需要创建删除功能来删除我的自定义 portlet 中的内容。

以下句子我都测试过了,删掉最新版本的内容,剩下的还在。

JournalArticleLocalServiceUtil.deleteArticle(themeDisplay.getCompanyId(), article.getArticleId(), sc);
JournalArticleLocalServiceUtil.deleteJournalArticle(article);
JournalArticleLocalServiceUtil.deleteArticle(article);
JournalArticleLocalServiceUtil.deleteArticle(article, SLASH, sc);
JournalArticleServiceUtil.deleteArticle(themeDisplay.getCompanyGroupId(), article.getArticleId(), SLASH, sc);

Liferay API 中是否有任何方法可以删除所有版本,或者我必须遍历版本并一一删除?

【问题讨论】:

  • 你试过JournalArticleLocalServiceUtil.deleteArticle( long groupId, String articleId, ServiceContext serviceContext)吗,基于源文件中的方法cmets,貌似这个方法删除了文章相关的所有资源?
  • 是的,Pankajkumar,我试过了。其实是我发的第一个例子,不过只删除最新版本
  • 您发布的第一个示例的第一个参数为 companyId,但此方法具有 groupId。你是不是误传了companyId?
  • 抱歉,我正在测试不同的 ID,这是最后一个示例。
  • 正如@PankajkumarKathiriya 所说,如果您看到了 api,那应该满足您的需求。 ** deleteArticle(long groupId, String articleId, ServiceContext serviceContext) ** 也许您使用的是不同的 groupId?尝试使用 themeDisplay.getScopeGroupId() 来检索 groupId github.com/liferay/liferay-portal/blob/6.2.3-ga4/portal-impl/…

标签: api liferay liferay-6


【解决方案1】:

我遇到了同样的问题,用这段代码解决了:

List<JournalArticle> versiones=JournalArticleLocalServiceUtil.getArticles(groupId, articleId);
for (int j = 0; j < versiones.size(); j++) {
   JournalArticle version=versiones.get(j);
   JournalArticleLocalServiceUtil.deleteArticle(groupId, version.getArticleId(), version.getVersion(), null,null)
}

【讨论】:

  • 我也想过这个解决方案,但我认为它应该在API中存在一个删除所有版本的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 2011-11-14
相关资源
最近更新 更多