Hibernate - 获取数据库中的所有 table 个名称

Hibernate - Get all table names in a Database

我正在尝试获取数据库 (Oracle 11g) 中的所有 table 名称,以便为 UI 中的每个 table 动态生成复选框。我没有在 .cfg.xml 文件中映射任何这些 table。

我使用了以下代码:

List<Object> list = sessionProd.createQuery("select table_name from user_tables").list();                               

for(Object l : list){
    System.out.println("L : " +l.toString());
}

但是报错如下: org.hibernate.hql.internal.ast.QuerySyntaxException: user_tables 未映射 [select table_name 来自 user_tables]

如果有任何方法可以在 Hibernate 4 中获取所有 table 个名称,请告诉我

我认为查询不妥。试试下面的代码片段

List<Object> list = sessionProd.createQuery("show tables from Database_name").list();                               

将查询字符串从 all_tables

更改为 select table_name
List<Object> list = sessionProd.createQuery("select table_name from all_tables").list();                               

for(Object l : list){
     System.out.println("L : " +l.toString());
}

您需要使用SQL查询,而不是HQL查询

sessionProd.createSQLQuery("select table_name from user_tables").list();

在这种情况下,Hibernate 会 return 例外,因为您还没有映射 user_tables。如果你想获得所有 table 名称,你应该创建 SQLQuery,那将 return 给你你需要的。您只能将 HQL (createQuery) 用于映射 tables

使用本机 SQL 查询方法解决了问题。感谢您的建议。

以下代码对我有用:

List<Object> list = sessionProd.createSQLQuery("select table_name from user_tables").list();