0

我使用带有休眠功能的 oracle 11g。Hibernate 被配置为在启动时验证模式,但是由于某种原因它找不到一个表并失败。

我有一个奇怪的情况,当它看到来自同一架构的其他表时,java.sql.DatabaseMetaData没有看到一个表(返回空结果集)。getTables

所以我有以下情况:

String[] TYPES = {"TABLE", "VIEW"};
DatabaseMetaData meta = ...
meta.getTables(null, "SCHEMA_NAME", "TABLE1", TYPES).next(); // true
meta.getTables(null, "SCHEMA_NAME", "TABLE2", TYPES).next(); // false

但以下查询已成功执行:

select * from schemaName.table1
select * from schemaName.table2

更多我可以查询字典表并查看这两个表:

select * from user_tables where table_name in ('TABLE1', 'TABLE2')

可能是什么原因?

4

1 回答 1

2
DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString(3));
}

试试上面的代码

第 3 列代表 Table_name 点击了解所有列

于 2013-10-10T10:47:35.920 回答