Hibernate 在初始架构创建时自动创建审核表

Hibernate 在初始架构创建时自动创建审核表,hibernate,hibernate-envers,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应用程序集成,并在初始创建时创建审计表 <propert

我正在尝试使用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" />    

我很好奇如何在审计表中为import.sql中的所有insert条目创建自动条目

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


谢谢。

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


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

不,我想您不能。因为envers使用hibernate逻辑来创建修订,但是您的import.sql只是通过JDCB执行,没有任何与JPA相关的逻辑。还有其他解决方案可以替代import.sql吗?要使用JPAOk创建初始数据,让我试试这个选项。