初始模式创建时自动创建审计表

时间:2013-03-20 13:41:58

标签: hibernate hibernate-envers

我正在尝试使用hibernate和envers,并希望使用以下属性在模式中创建初始数据:

<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.hbm2ddl.import_files" value="/META-INF/spring/import.sql"/>

Envers也与Spring应用程序集成,并在初始创建时创建审计表。

<property name="org.hibernate.envers.audit_strategy"        value="org.hibernate.envers.strategy.ValidityAuditStrategy"/>
<property name="org.hibernate.envers.audit_strategy_validity_store_revend_timestamp" value="true"/>
<property name="org.hibernate.envers.revision_field_name"      value="revision"/>
<property name="org.hibernate.envers.audit_strategy_validity_end_rev_field_name" value="revision_end"/>
<property name="org.hibernate.envers.revision_type_field_name" value="revision_type"/>
<property name="org.hibernate.envers.audit_strategy_validity_revend_timestamp_field_name" value="revision_end_timestamp"/>
<property name="hibernate.ejb.event.post-insert"                     value="org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.post-update"                     value="org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.post-delete"                     value="org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.pre-collection-update"                   value="org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.pre-collection-remove"                   value="org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.post-collection-recreate"                    value="org.hibernate.envers.event.AuditEventListener" />    

我很好奇如何在audit.sql中的所有插入条目的审计表中创建自动条目。

如果有人这样做,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:1)

以上评论是正确的。 Envers拦截对象级别的实体操作,因此任何直接查询(包括使用HQL / JPAQL的批量插入/更新)都不会被审计。

这里的解决方案是使用对象来创建初始数据,或者编写一些SQL脚本,为每个插入的行创建初始修订和“插入”审计条目。