Как сохранить историю каждой записи с помощью Spring Roo gvnix Audit

Я хотел бы сохранить свои данные "Мой сотрудник" в таблице "Сотрудник" и "История сведений" в таблице "EmployeeHistory" перед запуском приведенной ниже команды. Я могу сохранить записи в своей таблице "Сотрудник", но не сохранить в таблице "EmployeeHistory". Аудит jpa revisionLog --provider H-ENVERS

После выполнения вышеупомянутой команды я не могу сохранить таблицу Employee, а также получаю ошибку, похожую на эту org.hibernate.engine.jdbc.spi.sqlexceptionhelper - неверное имя объекта RevisionLogEntity

Мой лог.ру

project --topLevelPackage com.employeedetails --projectName EmployeeDetails
jpa setup --database MSSQL --provider HIBERNATE --hostName Hostname --databaseName dbname --userName sa --password Admin@123!!
database introspect --schema dbo --file db_schema
database reverse engineer --schema dbo --package ~.domain --includeTables "Employee"
web mvc setup
web mvc all --package ~.web
web mvc scaffold --class ~.web.EmployeeController --backingType ~.domain.Employee
web mvc scaffold --class ~.web.EmployeeListController --backingType ~.domain.Employee --path employeelist

web mvc finder all
web mvc jquery setup
web mvc jquery all
web mvc datatables setup
web mvc bootstrap setup
jpa gvnix setup
jpa batch all
web mvc batch setup
web mvc batch all
web mvc datatables add --type ~.web.EmployeeListController --mode show
security setup
web mvc bootstrap update
jpa audit setup
jpa audit revisionLog --provider H-ENVERS
jpa audit all --package ~.domain.audit

введите описание изображения здесь

1 ответ

Решение

Я вижу, что вы используете реверс-инжиниринг для создания вашей модели. Вы создали таблицы, необходимые Hibernate Envers для хранения информации о ревизиях?

Hibernate Envers требует нового лица RevisionLog хранить общую информацию обо всей редакции (дата, пользователь и т. д.), которая хранится в БД, и по одной таблице на каждую проверяемую сущность для хранения значений экземпляра сущности для каждой редакции.

gvNIX создаст эту конфигурацию для вас, но, поскольку вы используете инструмент обратного проектирования, hibernate.hbm2ddl.auto свойство должно быть установлено в none, Таким образом, необходимые таблицы Envers не будут сгенерированы на БД.

Простое решение может быть:

  1. Создать временную пустую БД
  2. Настройте свой проект, чтобы использовать его
  3. Задавать hibernate.hbm2ddl.auto в create
  4. Запустите приложение: Hibernate hbm2ddl сгенерирует необходимые таблицы
  5. Остановить приложение
  6. Создать все таблицы envers в исходной БД на основе ее определения временной БД
  7. Восстановите настройки БД и hbm2ddl в вашем проекте

Для получения дополнительной информации о Envers проверьте руководство по разработке

Удачи!

PD: Не забывайте исключать таблицы envers из конфигурации Reverse Engineering при следующем запуске!

Другие вопросы по тегам