Я использую 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')

Что может быть причиной?

0
michael nesterenko 10 Окт 2013 в 14:43
Это синоним или имя таблицы на самом деле TABLE2 (getTables требует, чтобы регистр был точным)?
 – 
Mark Rotteveel
10 Окт 2013 в 14:46
@MarkRotteveel, это не синоним, я вижу эту таблицу в USER_TABLES
 – 
michael nesterenko
10 Окт 2013 в 16:13

1 ответ

Лучший ответ
DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString(3));
}

Попробуйте приведенный выше код

Столбец 3 представляет Table_name Щелкните, чтобы узнать весь столбец числа

2
SpringLearner 10 Окт 2013 в 15:08
Ответы, содержащие только код, бесполезны для кого-либо еще с похожей, но не совсем такой же проблемой при чтении этого вопроса. Следовательно, это бесполезно на SO.
 – 
Sumurai8
10 Окт 2013 в 15:04
Надеюсь, теперь это будет полезно
 – 
SpringLearner
10 Окт 2013 в 15:09
Я проверил, видна ли таблица с этим подключением, это так. Что странно, почему тогда этого не видно в приложении?
 – 
michael nesterenko
10 Окт 2013 в 16:40
Это полезно для вас?
 – 
SpringLearner
10 Окт 2013 в 16:42
Какое точное значение показано для этой таблицы, поскольку регистр имени таблицы имеет значение для getTables.
 – 
Mark Rotteveel
10 Окт 2013 в 16:44