Erro na hora de dar o commit();

Será que alguém pode me dar uma luz , já procurei a respeito desse erro e não consegui encontrar . Ele aparece depois de dar o commit(); begintransaction() e persist() dá ok .

Exception in thread "main" javax.persistence.RollbackException: Error while committing the transaction at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:93) at DAO.GenericDAO.commit(GenericDAO.java:30) at DAO.Dao1.commit(Dao1.java:1) at DAO.GenericDAO.commitAndCloseTransaction(GenericDAO.java:42) at DAO.Dao1.commitAndCloseTransaction(Dao1.java:1) at DAO.teste.main(teste.java:15) Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214) at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147) at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:81) ... 5 more Caused by: 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:268) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184) 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:1216) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133) at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:76) ... 5 more Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into User (name, id) values ('alexandre ', '24') foi abortada. Chame getNextException para ver a causa. at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2598) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2737) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268) ... 13 more

Teu campo id da tabela User é String ou numérico?

Numérico , mas especificamente é do tipo integer.

Aí que está o erro então, veja o teu insert que ele gera:

Ele está tentando inserir a String ‘24’ para este campo numérico, verifique se na sua classe está declarado com String ou numérico.

ta como int, no java. No banco , ta integer. o negócio é que ele esta invertendo o insert into (name, id) values ("",’’) ; não era pra ser o contrário : Primeiro id depois o name?

Quanto a ordem pelo que sei não é para dar problemas. Se teu campo id na tabela é numérico e na tua classe que representa a tabela User o campo id também está como numérico o hibernate não deveria gerar o sql de insert tentando passar uma string no id como está ocorrendo. Verifique no seu método que grava como ele passa o id, se está passando como numérico mesmo, ou veja no momento que recupera esse id pra gravar se não está vindo como string.

Bem no persist ele ta ok , o name tá String e o id tá como inteiro.

O erro ocorre na hora do comit().

Fiz o teste no mysql , deu ok … acho q é alguma configuração do persistence. Não modifiquei absolutamente nada , exceto o persistence.xml.

Consegui resolvido , nem sei o q eu fiz fui alterando tanta coisa… mas valeu …