将 WAR 文件部署到 Liferay 时未创建 SQL 表

标签 sql liferay portlet

我为 Liferay 创建了一个 JSR-268 portlet,它使用服务与数据库交互。我可以在没有问题或错误的情况下部署 portlet,但是没有创建服务定义的表!

当我测试 portlet 时,我没有收到“找不到表”错误。我完全没有错误!该表只是不在数据库中。我在 Internet 上发现了其他内容,说我应该使用 Liferay Service Builder 创建的生成的“create.sql”文件,但我在任何地方都没有看到该文件。

有人可以帮我吗?

最佳答案

从未创建过表吗?当我手动删除表格时,我遇到了类似的问题。我以为再次部署 portlet 时会再次创建它们,但它没有发生。

在研究了源代码后,我发现 Liferay 将有关 portlet 的信息存储在表 servicecomponent 中。并在执行 META-INF/tables.sql 中的(伪)SQL 之前检查两件事:

  • build.numberservice.properties必须高于此值,存储在 servicecomponent ,
  • tables.sql必须与 servicecomponent 中存储的不同.

  • 只有这样tables.sql被执行。

    一个简单的方法是删除 servicecomponent 中的所有条目。寻址您的 portlet。

    关于将 WAR 文件部署到 Liferay 时未创建 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1187258/

    相关文章:

    SQL 查询连接两个表的结果但还包括在另一个表中没有对应行的行?

    sql - 从表中选择一组动态列并获取每个列的总和

    html - 如何在标签中包含 jsp 代码?见例子

    liferay - 如何设置<aui :button> icon in Liferay without using Javascript?

    java - 使用 Portlet 比只使用服务器端包含有何优势?

    java - 从另一个 portlet (Liferay + Spring) 获取 Portlet Application Context

    java - 如何从 SQL 数据库读取记录并将其显示到 JFrame 上?

    c# - 表 'Table' 中标识列的显式值只能在使用列列表且 IDENTITY_INSERT 为 ON 时指定

    java - 如何在数据库中上传照片以及如何在jsp页面中检索照片

    java - 如何使用actionURL发送参数中选定的id?