Я использую 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')
Что может быть причиной?
1 ответ
DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
System.out.println(rs.getString(3));
}
Попробуйте приведенный выше код
Столбец 3 представляет Table_name Щелкните, чтобы узнать весь столбец числа
getTables
.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
TABLE2
(getTables
требует, чтобы регистр был точным)?USER_TABLES