2013-10-10 7 views
0

Я использую oracle 11g с гибернацией. Hibernate настроен для проверки схемы при запуске, однако по какой-то причине он не может найти одну таблицу и не удается.DatabaseMetataData не видит таблицу

У меня странная ситуация, когда 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

Это синоним, или имя таблицы на самом деле 'TABLE2' (' getTables' требует, чтобы случай был точным совпадением)? –

+0

@MarkRotteveel, это не синоним, я могу видеть, что таблица в 'USER_TABLES' –

ответ

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

попробовать приведенный выше код

Колонка 3 представляет TABLE_NAME Нажмите, чтобы знать все колонки numbers

+0

Ответы, содержащие только код, бесполезны для всех, у кого есть аналогичная проблема, но не совсем такая же, что и при чтении этого вопроса. Поэтому это не полезно для SO. – Sumurai8

+0

@ Sumurai8 Надеюсь, что это будет полезно сейчас – SpringLearner

+0

Я проверил, видно ли это стол с этим подключением. Это странно, почему тогда это не видно в приложении? –

Смежные вопросы