所以这就是情况。我想将我们之前网站上的“旧”新闻添加到我们新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部署的更改,即使我知道这是一个肮脏的黑客,这可能是最简单的。
感谢;我真的很感激。
答案 0 :(得分:3)
使用Liferay API当然是明确而且更好的方法,但是对于只有15篇文章,我会尝试直接通过数据库进行更改。
我检查了数据库,似乎Liferay将数据存储在这些表中:JOURNALARTICLE
和ASSETENTRY
。
尝试在这两个表中更改创建日期。
然后重新加载缓存:控制面板 - >服务器管理 - >清除数据库缓存。
答案 1 :(得分:0)
您可以为应用程序启动事件编写挂钩。这样,每当liferay首次启动时,它将根据您的需要更改创建日期。以后如果要删除挂钩,可以轻松完成。请参阅此处了解如何创建挂钩并进行部署。
http://www.liferay.com/community/wiki/-/wiki/Main/Portal+Hook+Plugins
此外,即使对于1个值/文章,也不建议更改数据库本身。始终使用Liferay提供的服务API来修改。