使用休眠获取数据库中的所有表

Get all Tables in a Db using hibernate

有没有办法使用休眠检索数据库中所有表的名称? 我在 oracle Db 中执行了查询 SELECT TABLE_NAME FROM USER_TABLES,它工作得很好。 但是当涉及到 DB2 时,它不会。

您可以使用

List<Object> list = session.createQuery("from java.lang.Object").list();

这将 return 所有持久化实体(感谢 HQL 隐式多态性),并且这与数据库无关。请注意,它将排除没有记录的表。

如果您需要所有表,包括空表,您可以使用原生 sql 查询

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

本机查询的缺点是它特定于每个数据库,例如,在 Oracle 上查询是 "select * from user_tables"。