2014-10-06 7 views
6

Я использую Hibernate 4.3.6, и я попытался использовать функциональность Envers, добавив @Audited аннотацию к одному из моих классов @Entity. (Envers jar - hibernate-envers-4.3.6.Final.jar - находится на моем CLASSPATH.)Hibernate Envers - таблица REVINFO не существует

Когда я запускаю свой код, который работает отлично, без аннотации @Audited, я получаю org.hibernate. exception.SQLGrammarException:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dbname.REVINFO' doesn't exist 

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

(Если я создаю его вручную, в соответствии с описанной схемы - http://thinkinginsoftware.blogspot.co.il/2011/03/auditing-entities-with-hibernate-jpa.html. - тогда я получаю исключение, * _AUD не существует, я думаю, у меня есть один и тот же вопрос обо всех * _AUD таблиц.)

Спасибо, Реувен

ответ

6

Да, смотрите ниже: глава 7. Вы должны таблицу REV INFO и таблицу аудита каждого объекта, по умолчанию с именем {имя сущности} _AUD хотя это настраивается. Чтобы автоматически сгенерировать их, вам необходимо включить генерацию схемы Hibernate.

http://docs.jboss.org/envers/docs/

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

Смотрите также здесь для подробностей муравья задачи, которую вы можете использовать для генерации DDL:

http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-generateschema

+0

Спасибо, Алан! Это действительно помогло. – rweiser

+0

Хорошо, хорошо. Вы должны принять ответ: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

+0

Это старое место для документации Envers. Вы должны использовать этот http://docs.jboss.org/hibernate/orm/4.3/devguide/en-US/html/ch15.html – Dkyc

1

Пожалуйста, повторно проверьте, как вы добавили <prop key="hibernate.hbm2ddl.auto">update</prop> свойство в файле конфигурации пружины.

У меня также была такая же проблема, и я просто решил ее, добавив выше свойство.

Спасибо.

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