0 Replies Latest reply on Jan 21, 2015 5:38 AM by Sivasakthi T

    Can I create Hibernate Envers specific tables using Liquibase

    Sivasakthi T Newbie

      Hi,

       

      Our Java app is Spring based and we have domain classes and the corresponding schema generated via Liquibase.

      We are planning to add support for a single domain to be audited.

      a. We don't have hibernate.xml and hibernate.cfg.xml instead we are using application-context.xml. Then how do I create audit table through annotations like @Audited.

      How do I solve this issue? I have added hibernate configuration as

      <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="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>

      Added @Audited annotation in my domain class

      @Entity
      @Audited
      @Table(name="user")
      public class User implements Serializable {

      But this configuration did not create audit tables in the development environment. Its not clear what additional configuration I am missing here.

      b. How should I create the necessary envers specific schema using Liquibase, the production team is not comfortable with the idea of auto generating the SQL schema as well in the production environment.