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();
我正在尝试获取数据库 (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_nameList<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();