Como configurar o Hibernate Envers com hibernate.cfg.xml

Boa noite galera.

estou começando a usar o Envers

Resolvi tentar com hibernate puro, mas não está indo de jeito nenhum.

ele não está criando as tabelas: _Aud , RevInfo

estou usando Hibernate 3.5.6 Final, e TomCat 7

segue parte do código

hibernate.cfg.xml

[code]

<?xml version="1.0" encoding="UTF-8"?> org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/teste root senha value="update"
 <mapping class="Model.Usuario"/>

<!-- Envers Configuration comes HERE -->
<listener class="org.hibernate.envers.event.AuditEventListener" type="post-insert"/>
<listener class="org.hibernate.envers.event.AuditEventListener" type="post-update"/>
<listener class="org.hibernate.envers.event.AuditEventListener" type="post-delete"/>
<listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-update"/>
<listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-remove"/>
<listener class="org.hibernate.envers.event.AuditEventListener" type="post-collection-recreate"/>

Classe: Pojo

package Model;


import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.envers.AuditTable;
import org.hibernate.envers.Audited;


@Entity
@Audited
@AuditTable("historico")
public class Usuario implements Serializable {   
      
    @Id  
    @GeneratedValue  
    private Long id;  
    private String login;  
    private String senha;

      
      
    public Long getId() {  
        return id;  
    }  
    public void setId(Long id) {  
        this.id = id;  
    }  
    public String getLogin() {  
        return login;  
    }  
    public void setLogin(String login) {  
        this.login = login;  
    }  
    public String getSenha() {  
        return senha;  
    }  
    public void setSenha(String senha) {  
        this.senha = senha;  
    }  
  
}  

Classe para adicionar

[code]

import Model.Usuario;
import javax.persistence.Persistence;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class Adiciona {

public static void main(String[] args) {
        Usuario u = new Usuario();
    u.setLogin("xqx");
    u.setSenha("123");



    AnnotationConfiguration cfg = new AnnotationConfiguration();
    cfg.addAnnotatedClass(Usuario.class);
    cfg.configure();
    SessionFactory factory = cfg.buildSessionFactory();
    Session session = factory.openSession();
    session.beginTransaction();
    session.save(u);
    session.close();
    
    
}

}

Log

5 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.6-Final
40 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.6-Final
46 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
53 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
62 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
447 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
478 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
498 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
692 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
706 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
861 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: Model.Usuario
1009 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity Model.Usuario on table Usuario
1115 [main] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
1302 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
1307 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
1309 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
1326 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/teste
1329 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=root, password=****}
1830 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: MySQL, version: 5.1.41
1831 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.16 ( Revision: ${bzr.revision-id} )
1886 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQLDialect
1908 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
1914 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
1917 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
1919 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
1921 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
1922 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
1925 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
1926 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
1928 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
1929 [main] INFO org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2
1931 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
1933 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
1934 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
1936 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
1937 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
1944 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
1946 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
1948 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled
1950 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
1951 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled
1953 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
1955 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
1957 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
1969 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled
1969 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
1971 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
1972 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
1974 [main] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled
2229 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Model.Usuario_AUD -> historico
2257 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.envers.DefaultRevisionEntity -> REVINFO
2296 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
2724 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

Muito obrigado a atenção e ajuda de todos !!!

Há já ia me esquecendo rsrs

Bom Carnaval a todos ! =D

Tá faltando commitar a transação:

session.getTransaction().commit();

Espero ter ajudado.

Uma última coisa que vi:

Uma vez que você definiu a anotação @AuditTable na sua classe Usuario não vai ser criado uma tabela _AUD e sim uma tabela historico.

rimolive
acabei de commitar a transação e coloquei o session.save(Object) antes do session.beginTransaction();
ficando assim a clase


import Model.Usuario;

import javax.persistence.Persistence;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;


public class Adiciona {

    public static void main(String[] args) {
     

       Usuario u = new Usuario();
      
        u.setLogin("Felipe");
        u.setSenha("20");


 
     
              AnnotationConfiguration cfg = new AnnotationConfiguration();  
        cfg.addAnnotatedClass(Usuario.class);  
        cfg.configure();  
        SessionFactory factory = cfg.buildSessionFactory();  
        Session session = factory.openSession();  
        session.save(u); 
        session.beginTransaction();         
        session.getTransaction().commit();
          
        session.close();  
      
        
    }
}

Ele está dando erro informando que não existe a tabela Usuario_Aud que no meu caso alterei para “historico”

segue o erro

run:
3 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.6-Final
39 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.6-Final
44 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
51 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
62 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
317 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
345 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
350 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
572 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
585 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
720 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: Model.Usuario
838 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity Model.Usuario on table Usuario
945 [main] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
1094 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
1099 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
1102 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
1119 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/teste
1122 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=root, password=****}
1599 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: MySQL, version: 5.1.41
1601 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.16 ( Revision: ${bzr.revision-id} )
1659 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQLMyISAMDialect
1682 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
1688 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
1692 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
1693 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
1695 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
1696 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
1699 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
1701 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
1702 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
1705 [main] INFO org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2
1707 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
1708 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
1709 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
1711 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
1713 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
1720 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
1721 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
1723 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled
1724 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
1726 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled
1728 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
1730 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
1732 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
1743 [main] INFO org.hibernate.cfg.SettingsFactory - Echoing all SQL to stdout
1746 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled
1747 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
1749 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
1751 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
1752 [main] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled
2006 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Model.Usuario_AUD -> historico
2032 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.envers.DefaultRevisionEntity -> REVINFO
2111 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
2523 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
Hibernate: insert into Usuario (login, senha) values (?, ?)
Hibernate: insert into REVINFO (REVTSTMP) values (?)
Hibernate: insert into Usuario_AUD (REVTYPE, login, senha, id, REV) values (?, ?, ?, ?, ?)
2699 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1146, SQLState: 42S02
2700 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Table 'teste.historico' doesn't exist
2703 [main] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:262)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:178)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
	at org.hibernate.envers.synchronization.AuditProcess.doBeforeTransactionCompletion(AuditProcess.java:157)
	at org.hibernate.envers.synchronization.AuditProcess.beforeCompletion(AuditProcess.java:164)
	at org.hibernate.transaction.JDBCTransaction.notifyLocalSynchsBeforeTransactionCompletion(JDBCTransaction.java:274)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:140)
	at Adiciona.main(Adiciona.java:35)
Caused by: java.sql.BatchUpdateException: Table 'teste.historico' doesn't exist
	at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2024)
	at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1449)
	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
	... 10 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'teste.historico' doesn't exist
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.Util.getInstance(Util.java:386)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
	at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1976)
	... 13 more
3321 [main] ERROR org.hibernate.transaction.JDBCTransaction - exception calling user Synchronization
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:262)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:178)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
	at org.hibernate.envers.synchronization.AuditProcess.doBeforeTransactionCompletion(AuditProcess.java:157)
	at org.hibernate.envers.synchronization.AuditProcess.beforeCompletion(AuditProcess.java:164)
	at org.hibernate.transaction.JDBCTransaction.notifyLocalSynchsBeforeTransactionCompletion(JDBCTransaction.java:274)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:140)
	at Adiciona.main(Adiciona.java:35)
Caused by: java.sql.BatchUpdateException: Table 'teste.historico' doesn't exist
	at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2024)
	at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1449)
	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
	... 10 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'teste.usuario_aud' doesn't exist
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.Util.getInstance(Util.java:386)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
	at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1976)
	... 13 more
CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)

Consegui =D

Esqueci de inserir

SchemaExport se = new SchemaExport(cfg); se.create(true, true);

para quem tiver problema segue código completo

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <property name="hibernate.dialect"> org.hibernate.dialect.MySQLMyISAMDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/teste</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">senha10</property>
    <property name="hibernate.hbm2dll.auto">update</property>
    <property name="hibernate.show_sql">true</property>
     <property name="hibernate.hbm2ddl.auto"> value="update"</property> 
  

       
    <listener class="org.hibernate.envers.event.AuditEventListener" type="post-insert"/>   
        <listener class="org.hibernate.envers.event.AuditEventListener" type="post-update"/>   
        <listener class="org.hibernate.envers.event.AuditEventListener" type="post-delete"/>   
        <listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-update"/>   
        <listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-remove"/>   
        <listener class="org.hibernate.envers.event.AuditEventListener" type="post-collection-recreate"/>
    
     
  </session-factory>
</hibernate-configuration>

Classe Usuario ( POJO )

package Model;


import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.envers.AuditTable;
import org.hibernate.envers.Audited;


@Entity
@Audited
public class Usuario implements Serializable {   
      
    @Id  
    @GeneratedValue  
    private Long id;  
    private String login;  
    private String senha;

      
      
    public Long getId() {  
        return id;  
    }  
    public void setId(Long id) {  
        this.id = id;  
    }  
    public String getLogin() {  
        return login;  
    }  
    public void setLogin(String login) {  
        this.login = login;  
    }  
    public String getSenha() {  
        return senha;  
    }  
    public void setSenha(String senha) {  
        this.senha = senha;  
    }  
  
}  

Classe Adiciona


import Model.Usuario;
import javax.persistence.Persistence;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class Adiciona {

    public static void main(String[] args) {
    
        Usuario u = new Usuario();

        u.setLogin("Felipe");
        u.setSenha("2802");


   
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.addAnnotatedClass(Usuario.class);
        cfg.configure();
        SessionFactory factory = cfg.buildSessionFactory();
        Session session = factory.openSession();
        session.save(u);
        session.beginTransaction();
        session.getTransaction().commit();

        session.close();


    }
}

Classe para criar as devidas tabelas
GerarTabela


import Model.Historico;
import Model.Usuario;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

 
public class GerarTabela {

    public static void main(String[] args) {

        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.addAnnotatedClass(Usuario.class);
        cfg.configure();
        SessionFactory factory = cfg.buildSessionFactory();
        Session session = factory.openSession();
        session.beginTransaction();
        session.getTransaction().commit();
        SchemaExport se = new SchemaExport(cfg);
        se.create(true, true);
        session.close();

    }
}

Se eu não fizer esta classe de GerarTabela, ele dá erro pois diz que não existe a tabela Usuario_Aud.

Tentei acrescentar o código

SchemaExport se = new SchemaExport(cfg); se.create(true, true);
na classe Adiciona. Mas toda vez que rodo ela, ela acaba por recriar as tabelas.

Se eu colo

<listener class="org.hibernate.envers.event.AuditEventListener" type="post-insert"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="post-update"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="post-delete"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-update"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-remove"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="post-collection-recreate"/>
Minha pagina JSF dá erro

HibernateUtil

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Utils;


import Model.Livro;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;

/**
 * Hibernate Utility class with a convenient method to get Session Factory object.
 *
 * @author José Alexandre
 */
public class HibernateUtil {

    private static SessionFactory sessionFactory;

    private HibernateUtil() {
        
    }

    public static SessionFactory getSessionFactory() {

        if (sessionFactory == null) {
            try {
                // Create the SessionFactory from standard (hibernate.cfg.xml)
                // config file.
                AnnotationConfiguration ac = new AnnotationConfiguration();
                ac.addAnnotatedClass(Livro.class);
                sessionFactory = ac.configure().buildSessionFactory();
                //SchemaExport se = new SchemaExport(ac);
                //se.create(true, true);
                

            } catch (Throwable ex) {
                // Log the exception.
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }

            return sessionFactory;

        } else {
            return sessionFactory;
        }
        
    }

    public static void main(String[] args) {
        HibernateUtil.getSessionFactory();
    }

}

LivroDaoImp

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dao;

import Model.Livro;
import Utils.HibernateUtil;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author José Alexandre
 */
public class LivroDaoImp implements LivroDao {

    public void save(Livro livro) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.save(livro);
        t.commit();
    }
    public Livro getLivro(long registro) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return (Livro) session.load(Livro.class, registro);
    }
    public List<Livro> list() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery("from Livro").list();
        t.commit();
        return lista;
    }
    public void remove(Livro livro) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.delete(livro);
        t.commit();
    }
    public void update(Livro livro) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.update(livro);
        t.commit();
    }
    
    
   
}

Erro

java.lang.ExceptionInInitializerError
	at Utils.HibernateUtil.getSessionFactory(HibernateUtil.java:41)
	at Dao.LivroDaoImp.list(LivroDaoImp.java:31)
	at Controller.LivroController.getListarLivros(LivroController.java:30)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178)
	at javax.faces.component.UIData.getValue(UIData.java:554)
	at javax.faces.component.UIData.getDataModel(UIData.java:1248)
	at javax.faces.component.UIData.getRowCount(UIData.java:339)
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:456)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:201)
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:180)
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:85)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1494)
	at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:990)
	at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:69)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
	at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:972)
	at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:69)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
	at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:966)
	at Utils.HibernateUtil.getSessionFactory(HibernateUtil.java:33)
	... 56 more
Caused by: org.dom4j.DocumentException: Error on line 1 of document  : The processing instruction target matching "[xX][mM][lL]" is not allowed. Nested exception: The processing instruction target matching "[xX][mM][lL]" is not allowed.
	at org.dom4j.io.SAXReader.read(SAXReader.java:482)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1484)
	... 64 more