我为 Liferay 创建了一个 JSR-268 portlet,它使用服务与数据库交互。我可以在没有问题或错误的情况下部署 portlet,但是没有创建服务定义的表!
当我测试 portlet 时,我没有收到“找不到表”错误。我完全没有错误!该表只是不在数据库中。我在 Internet 上发现了其他内容,说我应该使用 Liferay Service Builder 创建的生成的“create.sql”文件,但我在任何地方都没有看到该文件。
有人可以帮我吗?
最佳答案
从未创建过表吗?当我手动删除表格时,我遇到了类似的问题。我以为再次部署 portlet 时会再次创建它们,但它没有发生。
在研究了源代码后,我发现 Liferay 将有关 portlet 的信息存储在表 servicecomponent
中。并在执行 META-INF/tables.sql
中的(伪)SQL 之前检查两件事:
build.number
在 service.properties
必须高于此值,存储在 servicecomponent
, tables.sql
必须与 servicecomponent
中存储的不同. 只有这样
tables.sql
被执行。一个简单的方法是删除
servicecomponent
中的所有条目。寻址您的 portlet。
关于将 WAR 文件部署到 Liferay 时未创建 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1187258/