通过Liferay API更改Liferay日志文章(Web内容)上的createDate

通过Liferay API更改Liferay日志文章(Web内容)上的createDate,api,liferay,Api,Liferay,情况是这样的。我想将以前网站中的“旧”新闻添加到新Liferay 6.1网站上的资产发布者portlet中。问题是,我希望它们显示出来,就像我在过去添加了它们一样 所以,我想,修改createDate有多难?此后,我可以直接访问MySQL数据库,并对文章对象的createDate字段执行更新。但是,无论清除缓存、重新索引搜索索引和重新启动Liferay,它似乎都不会传播到我的Liferay部署中。web内容仍然保持其“原始”createDate,即使数据库将其显示为我已将其更改为的值 以下是我使

情况是这样的。我想将以前网站中的“旧”新闻添加到新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
,如图所示

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

我只有大约15篇文章,我需要这样做。我可以通过引用ArticleID和GroupID找到它们

任何帮助都将不胜感激。我已经
grep
ped了Liferay部署,发现
setCreateDate
在知识库portlet中的.java文件中被大量使用,但是我不知道如何在不创建portlet的情况下直接使用它们

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


谢谢,;我真的很感激。

使用Liferay API当然是一种更清晰、更好的方法,但对于仅15篇文章,我会尝试直接通过数据库对其进行更改

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

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


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

您可以为应用程序启动事件编写钩子。这样,无论何时首次启动liferay,它都会根据需要更改创建日期。稍后,如果您想移除挂钩,可以很容易地完成。请参见此处,了解如何创建和部署挂钩


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

这就解决了问题。美好的我没有意识到AssetEntry表也包含相关字段。如果我在两个点都改变它,它就会工作!