2010-12-06 3 views
2

Я получаю следующее исключение с Hibernate:«Таблица не найдена» исключение с Hibernate

10:18:14,795 INFO [SchemaValidator] Running schema validator 

10:18:14,795 INFO [SchemaValidator] fetching database metadata 

10:18:16,958 INFO [DatabaseMetadata] table not found: DUMMY_TABLE 

10:18:16,963 ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=bkoMdw-ear.ear/bkoMdw-ejb.jar#bkoMdw state=Create 
javax.persistence.PersistenceException: [PersistenceUnit: bkoMdw] Unable to build EntityManagerFactory 

(...) 

Caused by: org.hibernate.HibernateException: Missing table: DUMMY_TABLE 
    at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1127) 
    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139) 
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:359) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341) 
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) 
    at 

org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) 

Проблема заключается в том, что таблица существует и файл источника данных настроен правильно.

Что мне не хватает? Вы можете посоветовать устранить эту проблему?

Заранее спасибо!

ответ

6

Проблема заключается в том, что вы думаете таблица существует и что источник данных настроен правильно, а Hibernate знает, что это не правильно.

Увеличьте уровни журнала и используйте -Dhibernate.show_sql=true, чтобы включить ведение журнала для операторов SQL. Это должно помочь отследить это.

[EDIT] Также убедитесь, что у вас нет пробела до или после аннотации @Table. Если у вас есть эта аннотацию:

@Table(name = "myTable ") // Note the space after the name!! 

Тогда Hibernate будет использовать указанное имя, чтобы создать таблицу (так что вы будете иметь таблицу с именем SQL 'MYTABLE '), но это не всегда экранирует имя при выполнении запросов ,

+0

Выход из hibernate не отображает имена таблиц с пробелами. Они должны добавить некоторые скобки или что-то. – Tommy 2012-11-26 14:13:50

+1

@Tommey: сообщите об ошибке, пожалуйста – 2012-11-27 08:31:53

4

Также убедитесь, что корпус правильный. Возможно, у вас есть это в databse, поскольку dummy_table может быть.

+0

Имя моей таблицы и имя объекта не совпадают. Плохое написание. Спасибо – Ali 2012-09-03 07:41:11

6

У меня была такая же проблема с представлением, которое я использовал в моем сопоставлении. После того, как я отключил проверку Hibernate, он работает правильно. Кажется, что валидация имеет проблему с представлениями.

0

@ Хендрик имеет правильную идею. У меня была та же проблема, и я смог исправить эту проблему, добавив бобов в свой файл приложения.

2

У меня была та же проблема с базой данных mysql. Проблема заключалась в том, что я использовал имена верхнего регистра для таблиц. Я опустил их, и теперь все работает.

0

У меня такое же исключение из спящего режима. В моем случае это произошло потому, что пользователю базы данных не разрешалось правильно видеть таблицы. Таблицы были окончательно размещены в базе данных.

После того как я назначил роли db_datareader пользователям этой базы данных он сработал.

Однако в другом случае, когда таблицы на самом деле не были там, я получил точно такое же исключение из спящего режима. В случаях, когда есть таблицы, я думаю, что спящий режим может не показывать больше информации из соображений безопасности.

2

работал для меня, когда я изменил @Table (имя = "schema.table") Для @Table (имя = "таблицы", схемы = "схема")

0

У меня была аналогичная проблема с postgresql и спящий режим 5.2.10.

Таблица определенно существует. Когда я отвернулся, все сработало.Оказалось, что таблица, вероятно, не может быть найдена, потому что hibernate не может обрабатывать определенную схему. Это похоже на: https://hibernate.atlassian.net/browse/HHH-11286.

Я обновил postgresql и диалект (PostgreSQLXXDialect). После этого проблема исчезла.

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