2013-03-20 83 views
0

我想使用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的所有插入的條目在審計表自動條目。

如果有人已經這樣做,請讓我知道。

謝謝。

+0

不,我認爲你不能。因爲envers使用hibernate邏輯來創建修訂版,但是import.sql只是通過JDCB執行而沒有任何JPA相關的邏輯 – 2013-03-20 13:59:53

+0

是否有任何其他解決方案可以代替import.sql工作? – niks75 2013-03-21 03:46:01

+0

使用JPA – 2013-03-21 06:57:08

回答

1

以上評論是正確的。 Envers在對象級別攔截實體操作,所以任何直接查詢(包括例如使用HQL/JPAQL的批量插入/更新)都不會被審計。

這裏的解決方案是使用對象來創建初始數據,或者編寫一些SQL腳本,它爲每個插入的行創建初始修訂版和「插入」審計條目。