Java 使用hibernate获取数据库中的所有表

Java 使用hibernate获取数据库中的所有表,java,hibernate,Java,Hibernate,有没有办法使用hibernate检索数据库中所有表的名称? 我在oracle数据库中执行了查询selecttable\u NAME fromuser\u TABLES,效果很好。 但是对于DB2,它不会这样做。您可以使用 List<Object> list = session.createQuery("from java.lang.Object").list(); List List=session.createQuery(“from java.lang.Object”).List

有没有办法使用hibernate检索数据库中所有表的名称? 我在oracle数据库中执行了查询
selecttable\u NAME fromuser\u TABLES
,效果很好。 但是对于DB2,它不会这样做。

您可以使用

List<Object> list = session.createQuery("from java.lang.Object").list();
List List=session.createQuery(“from java.lang.Object”).List();
这将返回所有持久实体(由于HQL隐式多态性),这是与数据库无关的。注意,它将排除没有记录的表

如果需要所有表,包括空表,可以使用本机sql查询

List<Object[]> list = session.createSQLQuery("select * from sysibm.systables").list();
List List=session.createSQLQuery(“从sysibm.systables中选择*).List();

本机查询的缺点是它对每个数据库都是特定的,例如,在Oracle上,查询是“从用户表中选择*”

Link:我相信这很有帮助。如果使用实体而不是本机查询,是否有任何方法来获取表名,而不考虑数据库?使用JDBC API: