通过Liferay API在Liferay Journal Article(Web Content)上更改createDate

时间:2012-05-09 18:26:00

标签: api liferay

所以这就是情况。我想将我们之前网站上的“旧”新闻添加到我们新Liferay 6.1网站上的资产发布商portlet中。问题在于我希望它们显示为过去曾经添加过它们。

所以,我想,修改createDate有多难?我之后能够直接访问MySQL数据库并在文章对象的createDate字段上执行更新。但是,它似乎没有传播到我的Liferay部署,无论清除缓存,重新索引搜索索引,还是重新启动Liferay。 Web内容仍保持“原始”createDate,即使数据库将其显示为我已将其更改为的值。

这是我使用的查询:

mysql> UPDATE JournalArticle SET createDate='2012-03-08 15:17:12' WHERE ArticleID = 16332;

我已经了解到直接操作数据库是一个禁忌,因为数据库/ Liferay的动态并不像Liferay执行查找那样直接。所以看起来我可能需要使用Liferay API,即setCreateDate,如here所示。

但我完全不知道在何处以及如何利用API。我是否需要创建一个虚拟portlet,其唯一目的是使用此API调用?或者我可以在运行Liferay部署的服务器上的某处创建.java文件并运行它以利用此方法吗?

我只需要15篇文章才能做到这一点。我可以通过引用ArticleID和GroupID找到它们。

非常感谢任何帮助。我{Life}部署了grep,发现setCreateDate在知识库portlet中的.java文件中被大量使用,但我不知道如何在不创建portlet的情况下直接使用它们

另一方面,如果有人知道如何让我的数据库传播它对Liferay部署的更改,即使我知道这是一个肮脏的黑客,这可能是最简单的。

感谢;我真的很感激。

2 个答案:

答案 0 :(得分:3)

使用Liferay API当然是明确而且更好的方法,但是对于只有15篇文章,我会尝试直接通过数据库进行更改。

我检查了数据库,似乎Liferay将数据存储在这些表中:JOURNALARTICLEASSETENTRY

尝试在这两个表中更改创建日期。

然后重新加载缓存:控制面板 - >服务器管理 - >清除数据库缓存。

答案 1 :(得分:0)

您可以为应用程序启动事件编写挂钩。这样,每当liferay首次启动时,它将根据您的需要更改创建日期。以后如果要删除挂钩,可以轻松完成。请参阅此处了解如何创建挂钩并进行部署。

http://www.liferay.com/community/wiki/-/wiki/Main/Portal+Hook+Plugins

此外,即使对于1个值/文章,也不建议更改数据库本身。始终使用Liferay提供的服务API来修改。