Исключение «Таблица не найдена» в спящем режиме - PullRequest
4 голосов
/ 06 декабря 2010

Я получаю следующее исключение с 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)

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

Чего мне не хватает?Любой совет, чтобы устранить это?

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

Ответы [ 8 ]

8 голосов
/ 06 декабря 2010

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

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

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

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

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

6 голосов
/ 19 января 2011

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

4 голосов
/ 06 декабря 2010

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

3 голосов
/ 26 августа 2016

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

2 голосов
/ 21 мая 2015

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

1 голос
/ 09 ноября 2017

У меня была похожая проблема с postgresql и hibernate 5.2.10.

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

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

0 голосов
/ 17 августа 2016

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

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

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

0 голосов
/ 02 августа 2014

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

<bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean">
    <property name="caseSensitiveTableNames" value="false"/>
    <property name="qualifiedTableNames" value="true"/>
    <property name="datatypeFactory">
        <bean class="org.dbunit.ext.mysql.MySqlDataTypeFactory"/>
    </property>
    <property name="metadataHandler">
        <bean class="org.dbunit.ext.mysql.MySqlMetadataHandler"/>
    </property>
</bean>
<bean id="dbUnitDatabaseConnection" class="com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean">
    <property name="databaseConfig" ref="dbUnitDatabaseConfig"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="transactionAware" value="true"/>
    <property name="schema" value="yourSchemaName"/>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...