Pessoal,
Tenho um aplicação que usa JPA (hibernate), deixando o VRaptor controlar as transações, colocando:
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.util.jpa</param-value>
</context-param>
Eu começei a desenvolver esta aplicação no Glassfish 3.0.x, e estava tudo ok. Mas agora na versão 3.1 estou visualizando no server.log que a cada requisição à uma lógica do VRaptor a seguinte exceção ocorre:
java.sql.SQLException: Can't call commit when autocommit=true
at com.mysql.jdbc.Connection.commit(Connection.java:2161)
at com.sun.gjc.spi.base.ConnectionHolder.commit(ConnectionHolder.java:241)
at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:170)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:146)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:76)
at br.com.caelum.vraptor.util.jpa.JPATransactionInterceptor.intercept(JPATransactionInterceptor.java:49)
Tentei setar o hibernate.connection.autocommit para false, mas este é ignorado devido à “hibernate.connection.autocommit = false break the EJB3 specification”.
Alguém tem idéia de como eu desativar o auto-commit do JPA para parar de dar esta exceção?
PS: tudo funciona, grava no DB tudo ok. Só fica lançando a exceção…