我們的Java應用程序是基於Spring的,我們有域類和通過Liquibase生成的相應模式。我可以使用Liquibase創建Hibernate Envers特定表格
我們計劃增加對單個域進行審計的支持。
a。我們沒有hibernate.xml和hibernate.cfg.xml,而是使用application-context.xml。那麼如何通過@Audited等註釋創建審計表。
我該如何解決這個問題?我在我的領域類
@Entity
@Audited
@Table(name="user")
public class User implements Serializable {
加入Hibernate配置爲
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.ejb.event.post-insert">org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener</prop>
<prop key="hibernate.ejb.event.post-update">org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener</prop>
<prop key="hibernate.ejb.event.post-delete">org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener</prop>
<prop key="hibernate.ejb.event.pre-collection-update">org.hibernate.envers.event.AuditEventListener</prop>
<!-- <prop key="hibernate.ejb.event.pre-collection-remove">org.hibernate.envers.event.AuditEventListener</prop>
<prop key="hibernate.ejb.event.post-collection-recreate">org.hibernate.envers.event.AuditEventListener</prop> -->
<prop key="org.hibernate.envers.revision_field_name">REV</prop>
<prop key="org.hibernate.envers.revision_type_field_name">REVTYPE</prop>
<prop key="org.hibernate.envers.auditTablePrefix"></prop>
<prop key="org.hibernate.envers.auditTableSuffix">_AUD</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
新增@Audited註解,但是這種配置並沒有創造發展環境審計表。它不清楚我在這裏失去了什麼額外的配置。
b。我應該如何使用Liquibase創建必要的envers特定模式,生產團隊對於在生產環境中自動生成SQL模式的想法也不太自在。
使用Envers時可以手動創建審計表。所以我想你需要添加配置到liquibase來創建這些表。 – Rohit 2015-01-21 06:31:11
感謝您的回覆!如果我手動創建審計表,那麼在更新原始表中的任何字段時如何填充? – SST 2015-01-21 13:35:09
您正在使用哪種Hibernate版本?使用4,你不需要任何特殊的配置來啓用審計,只需添加jar就足夠了。 – adamw 2015-01-22 08:00:59