Database 如何列出Liferay Portal中的所有数据库表[不考虑使用的数据库]?

Database 如何列出Liferay Portal中的所有数据库表[不考虑使用的数据库]?,database,hibernate,liferay,datasource,Database,Hibernate,Liferay,Datasource,无论使用哪个数据库,我都需要列出Liferay Portal Server中的所有数据库表。有什么提示吗 我可以得到SessionFactory和session,但在那之后,我无法得到该做什么的提示 SessionFactory sessionFactory = (SessionFactory) PortalBeanLocatorUtil.locate("liferaySessionFactory"); 有人能给我指个方向吗 编辑:我需要在自定义构建的portlet中阅读表及其字段的完整列表。

无论使用哪个数据库,我都需要列出Liferay Portal Server中的所有数据库表。有什么提示吗

我可以得到SessionFactory和session,但在那之后,我无法得到该做什么的提示

SessionFactory sessionFactory = (SessionFactory) PortalBeanLocatorUtil.locate("liferaySessionFactory");
有人能给我指个方向吗


编辑:我需要在自定义构建的portlet中阅读表及其字段的完整列表。

Liferay的源代码附带了完整的表列表。例如,看

或者,您可以只打开不信任度最低的数据库浏览器,并枚举已为Liferay配置的数据库中的表


请记住:这些表的内容只能由Liferay更新。通过访问API来更改它们,不要直接编写任何内容。违反这一假设很可能会导致问题。

Liferay的源代码附带了完整的表列表。例如,看

或者,您可以只打开不信任度最低的数据库浏览器,并枚举已为Liferay配置的数据库中的表

请记住:这些表的内容只能由Liferay更新。通过访问API来更改它们,不要直接编写任何内容。违反此假设很可能会导致问题。

请尝试以下代码:

    try {
        DataSource dataSource = (DataSource) PortalBeanLocatorUtil.locate("liferayDataSource");
        Connection connection =  dataSource.getConnection();
        DatabaseMetaData md = connection.getMetaData();
        ResultSet rs = md.getTables(null, null, "%", null);
        while (rs.next()) {
            System.out.println(rs.getString(3));
        }

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
参考资料:

  • 请尝试以下代码:

        try {
            DataSource dataSource = (DataSource) PortalBeanLocatorUtil.locate("liferayDataSource");
            Connection connection =  dataSource.getConnection();
            DatabaseMetaData md = connection.getMetaData();
            ResultSet rs = md.getTables(null, null, "%", null);
            while (rs.next()) {
                System.out.println(rs.getString(3));
            }
    
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    参考资料:


  • 嗨,奥拉夫,谢谢你的回复。我知道我可以在那里找到所有的桌子。我想在我的portlet中列出它们。对不起,如果我的问题没有反映出来。我会阅读数据,但绝对不会写作。我会使用所有这些表来创建一个报告,所以只需要读取数据。我希望Liferay能提供类似的东西,但我找不到。嗨,奥拉夫,你帮助我找到了Liferay的数据库表列表。非常感谢。顺便问一下,我们从哪里可以得到这些表格的描述?如何找到用于存储社区、用户等信息的表。由于这些表是内部存储,因此我所知没有公共文档。注意:我知道有几起事件,人们手动更新数据库——不是通过API,而是通过SQL——但失败惨重。在一个例子中,失败发生在写操作6个月后,需要一段时间才能找出原因。结论:您永远不想写入数据库。不要看它,这会更容易。@OlafKock Liferay中的一些东西只能通过查看数据库和代码才能找到。如“为了在LR7.3中创建‘内容页’:创建classPK=0和classNameId=0的布局,然后创建一个LayoutPageTemplateStructure,其中包含您需要的FragmentEntry,但您需要先将FragmentEntry内容复制到一个新的FragmentryLink,以便您可以创建另一个草稿布局(草稿布局由XY定义)使用相同的plid,但不同的classNameId,…”(好吧,这不是怎么做的,但是Liferay缺少解释对象关系的文档)@orithena这与我的消息没有矛盾,即永远不要写入Liferay的数据库表(另请参阅)。但是,正如通过查看数据库一样,您也可以通过查看检索到的对象来了解通过API提到的细节。在db浏览器中显示可能更方便,但仅此而已。永远不要写入Liferay的数据库。我支持2014年的信息,当时这个问题的原始答案已经写好。嗨,奥拉夫,谢谢你的回复。我知道我可以在那里找到所有的桌子。我想在我的portlet中列出它们。对不起,如果我的问题没有反映出来。我会阅读数据,但绝对不会写作。我会使用所有这些表来创建一个报告,所以只需要读取数据。我希望Liferay能提供类似的东西,但我找不到。嗨,奥拉夫,你帮助我找到了Liferay的数据库表列表。非常感谢。顺便问一下,我们从哪里可以得到这些表格的描述?如何找到用于存储社区、用户等信息的表。由于这些表是内部存储,因此我所知没有公共文档。注意:我知道有几起事件,人们手动更新数据库——不是通过API,而是通过SQL——但失败惨重。在一个例子中,失败发生在写操作6个月后,需要一段时间才能找出原因。结论:您永远不想写入数据库。不要看它,这会更容易。@OlafKock Liferay中的一些东西只能通过查看数据库和代码才能找到。如“为了在LR7.3中创建‘内容页’:创建classPK=0和classNameId=0的布局,然后创建一个LayoutPageTemplateStructure,其中包含您需要的FragmentEntry,但您需要先将FragmentEntry内容复制到一个新的FragmentryLink,以便您可以创建另一个草稿布局(草稿布局由XY定义)使用相同的plid,但不同的classNameId,…”(好吧,这不是怎么做的,但是Liferay缺少解释对象关系的文档)@orithena这与我的消息没有矛盾,即永远不要写入Liferay的数据库表(另请参阅)。但是,正如通过查看数据库一样,您也可以通过查看检索到的对象来了解通过API提到的细节。在db浏览器中显示可能更方便,但仅此而已。永远不要写入Liferay的数据库。我支持2014年的这一信息,当时这个问题的原始答案已经写好。