Database 在liferay中部署portlet后自动填充表

Database 在liferay中部署portlet后自动填充表,database,service,liferay,portlet,populate,Database,Service,Liferay,Portlet,Populate,我需要一种方法来自动填充由部署在liferay中的portlet的服务生成器创建的表。我怎样才能做到这一点?我正在考虑一个启动钩子,但是我将无法访问特定portlet的服务。那么,有没有办法通过portlet本身来填充它呢?如果您设法不让更改具有破坏性(例如,小心不要在每次启动时填充),那么您可以在StartupAction(或启动挂钩)中完成。您可以将这个钩子添加到您的portlet项目中——这很好。或者,您可以在liferay-plugin-package.properties中声明一个钩子

我需要一种方法来自动填充由部署在liferay中的portlet的服务生成器创建的表。我怎样才能做到这一点?我正在考虑一个启动钩子,但是我将无法访问特定portlet的服务。那么,有没有办法通过portlet本身来填充它呢?

如果您设法不让更改具有破坏性(例如,小心不要在每次启动时填充),那么您可以在StartupAction(或启动挂钩)中完成。您可以将这个钩子添加到您的portlet项目中——这很好。或者,您可以在liferay-plugin-package.properties中声明一个钩子依赖于portlet(反之亦然)——这将使服务可用。但出于这个目的,我只是将所有内容打包在一个portlet插件中

如果您可能有破坏性的更改,升级操作将是一个更安全的赌注:它保证只运行一次

例如,请参阅旧的sevencogs示例(如果需要指针,请告诉我,然后我会将其取出)

更新:要在portlet项目中包含这样一个钩子,请使用以下内容添加WEB-INF/liferay-hook.xml(或者使用liferay IDE的向导向项目添加钩子)


当然,还要创建前面提到的启动操作,扩展
com.liferay.portal.kernel.events.SimpleAction

尝试从servicecomponent表中删除一个条目。并重新部署您的portlet

delete FROM servicecomponent where buildNamespace="<your table namespace>"
delete FROM servicecomponent where buildNamespace=“”

我在portlet中添加了一个portlet.properties文件,并添加了
application.startup.events=com。‌​startup.StartupTest
,并创建了扩展
SimpleAction
的类,但它不运行。我们不能在portlet中实现这一点吗?
application.startup.events=com.example.MyStartupAction
delete FROM servicecomponent where buildNamespace="<your table namespace>"