Hibernate - 获取数据库中的所有表名

时间:2016-02-04 09:00:14

标签: java oracle hibernate rcp

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

我使用了以下代码:

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 from user_tables]

如果有办法在Hibernate 4中获取所有表名,请告诉我

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

以下代码对我有用:

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

答案 2 :(得分:0)

我认为查询不合适。尝试使用以下代码段

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

答案 3 :(得分:0)

使用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());
}

答案 4 :(得分:0)

在这种情况下,Hibernate会向您返回Exception,因为您没有映射user_tables。如果你想获得所有的表名,你应该创建SQLQuery,这将返回给你所需要的。您只能对映射表使用HQL(createQuery)