如何使用Spring Roo gvnix Audit保存每条记录的历史记录

时间:2016-12-21 14:27:56

标签: spring-roo gvnix

我想在员工表和历史详细信息EmployeeHistory表中保存我的员工详细信息 在运行以下命令之前,我能够将记录保存在Employee表中,但不能保存在EmployeeHistory表中 jpa audit revisionLog - 提供者H-ENVERS

运行上面的命令后,我无法保存Employee表,我也收到这样的错误 org.hibernate.engine.jdbc.spi.sqlexceptionhelper - 无效的对象名称RevisionLogEntity

我的log.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




enter image description here

1 个答案:

答案 0 :(得分:1)

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

Hibernate Envers需要一个新的实体RevisionLog来存储有关存储在DB中的所有修订(日期,用户等)的一般信息,以及每个实体审计的一个表,以存储每个修订的实体实例值。

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

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

  1. 创建临时空数据库
  2. 配置项目以使用它
  3. hibernate.hbm2ddl.auto设为create
  4. 启动应用程序: Hibernate hbm2ddl 将生成所需的表格
  5. 停止申请
  6. 根据其对temporal DB的定义
  7. 在原始DB中创建所有envers表
  8. 恢复项目中的DB和hbm2ddl设置
  9. 有关Envers的更多信息,请查看development guide

    祝你好运!

    P.D。:下次执行时,不要忘记从逆向工程配置中排除envers表!