0

我想在运行以下命令之前将我的员工详细信息保存在 Employee 表和 History details EmployeeHistory 表中,我可以将记录保存在我的 Employee 表中,但不能保存在 EmployeeHistory 表中 jpa audit revisionLog --provider H-ENVERS

运行上述命令后,我无法保存 Employee 表,我也收到类似 org.hibernate.engine.jdbc.spi.sqlexceptionhelper - invalid object name RevisionLogEntity 的错误

我的日志.roo

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

在此处输入图像描述

4

1 回答 1

1

我可以看到您正在使用逆向工程来生成模型。您是否创建了 Hibernate Envers 所需的表来存储修订信息?

Hibernate Envers 需要一个新实体RevisionLog来存储有关所有修订版(日期、用户等)的一般信息,这些信息存储在 DB 中,并且每个经过审计的实体一张表来存储每个修订版的实体实例值。

gvNIX 为您创建此配置,但是,当您使用逆向工程工具时,该hibernate.hbm2ddl.auto属性应设置为none. 因此,不会在 DB 上生成所需的 Envers 表。

一个简单的解决方案可能是:

  1. 创建一个临时空数据库
  2. 配置您的项目以使用它
  3. 设置hibernate.hbm2ddl.autocreate
  4. 启动应用程序:Hibernate hbm2ddl将生成所需的表
  5. 停止申请
  6. 根据时态数据库的定义在原始数据库中创建所有envers表
  7. 恢复项目中的 DB 和 hbm2ddl 设置

有关 Envers 的更多信息,请查看开发指南

祝你好运!

PD:下次执行时不要忘记从逆向工程配置中排除 envers 表!

于 2017-01-11T09:59:52.443 回答