tenhu um VO simples…com um id do tipo Integer…configurei o xml bunitinhu…mas ele tah lançando as exceptions a seguir qnd vou inserir
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not fetch initial value
at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:90)
at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:43)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:85)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:429)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:424)
at dot.Main.main(Main.java:67)
Caused by: java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.NullPointerException
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:68)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:57)
at com.mchange.v2.c3p0.stmt.GooGooStatementCache$2.run(GooGooStatementCache.java:343)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:354)
Caused by: java.lang.NullPointerException
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:562)
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:504)
at com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:3228)
at java.lang.String.valueOf(String.java:2577)
at java.lang.StringBuffer.append(StringBuffer.java:220)
at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
at com.mysql.jdbc.Connection.registerStatement(Connection.java)
at com.mysql.jdbc.Statement.<init>(Statement.java:190)
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:429)
at com.mysql.jdbc.Connection.clientPrepareStatement(Connection.java:2063)
at com.mysql.jdbc.Connection.clientPrepareStatement(Connection.java:1996)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4266)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4185)
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:585)
at com.mchange.v2.c3p0.stmt.GooGooStatementCache$2.run(GooGooStatementCache.java:333)
acho q deve ser alguma coisa com o id…mas num tah dando…alguem pode me dar uma luz???
Cara olha o generate do seu xml!
tipo:
<generator class=“assigned”/>
Ele deve estar de um jeito no hbm e de ooutro no banco!
Tipo que vc ta falando na xml que o campo id esta com autoincremente e ele nao esta no banco assim.
Se não resolver
Posta seu HBm ai!
eu fis ateh um otro VO pa testa....mas tah dando a mesma coisa...
pa salva eu to fz assim
Session sessao = HibernateUtility.getSession();
Transaction transaction = sessao.beginTransaction();
doxo d = new doxo();
d.setDoxo("doOOXOXO");
d.setLol("lOOOOLll");
sessao.save(d);
transaction.commit();
sessao.close();
A
AndersonAugustoPJ
Cara, ta melhorando, faz um teste, atribui um valor pro id tb!
Mesmo que ele gere sozinho, só para nao dar nullpointerException!
M
MirokuPJ
eu jah tentei…num funciono…mas eu coloquei o log4j e olha só
2005-08-18 10:49:48,468 WARN hibernate.util.JDBCExceptionReporter -> SQL Error: 0, SQLState: null
2005-08-18 10:49:48,468 ERROR hibernate.util.JDBCExceptionReporter -> An SQLException was provoked by the following failure: java.lang.NullPointerException
2005-08-18 10:49:48,468 ERROR event.def.AbstractFlushingEventListener -> Could not synchronize database state with session
boOMMM eu resolvi o problema acima…era a conf. do c3p0 do cfg.xml…
mas agora tah dando nullpointerexcetion no transaction.commit();.,…puta briga com esse hibernate…lol…mas eu vou persistir mais do q ele AUHEuaheuahaue…
intaum…alguem sabe o q pode ser??
A
AndersonAugustoPJ
Nao desiste nao, depois da primeira transação gravando o resto vai de vento e poupa!
Posta o log do ultimo erro ai!!
M
MirokuPJ
Fri Aug 19 08:35:10 BRT 2005 TRACE:
Fri Aug 19 08:35:10 BRT 2005 TRACE:
Hibernate: /* insert dot.modelo.doxo */ insert into doxo (doxo, lol, id) values (?, ?, ?)
Exception in thread "main" java.lang.NullPointerException
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:562)
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:504)
at com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:3228)
at java.lang.String.valueOf(String.java:2577)
at java.lang.StringBuffer.append(StringBuffer.java:220)
at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
at com.mysql.jdbc.Connection.registerStatement(Connection.java)
at com.mysql.jdbc.Statement.<init>(Statement.java:190)
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:429)
at com.mysql.jdbc.Connection.clientPrepareStatement(Connection.java:2063)
at com.mysql.jdbc.Connection.clientPrepareStatement(Connection.java:1996)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4266)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4185)
at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:189)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:396)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:76)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:69)
at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:150)
at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1839)
at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:2200)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:46)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
at dot.Main.main(Main.java:76)
Fri Aug 19 08:35:10 BRT 2005 TRACE:
Fri Aug 19 08:35:11 BRT 2005 TRACE:
protectedvoidcommit(Session sess, Transaction tx) throws Exception {logF.debug("#################### Entrou no evento commit");Exceptionexc=newException();Stringmsg="";try{sess.flush();if( tx != null ) {tx.commit(); aposChamarBO(sess); }logF.debug("############# Commit ok");if(logTempoTransacao.isDebugEnabled()) logTempoTransacao.debug("Fez commit em "+ new java.util.Date()); } catch (JDBCException e1) {log.fatal("Erro SQL ao tentar gravar: " + e1);msg="erros.sql.geral";exc=e1;} catch (HibernateException e2) {log.fatal("Erro Hibernate ao tentar gravar: " + e2);exc=e2;msg="erros.hibernate.geral";} catch (Exception e) {log.error("Erro Geral ao tentar gravar: " +e,e);e.printStackTrace();exc=e;msg="erros.persistencia.geral";} try{//SetandooautoCommitparafalsodevidoaerrocomomysql//seatransacaofornulaentaoconsideraqueoobjetoestasendo//comCMPif(tx!=null) sess.connection().setAutoCommit(false);if(tx!=null) tx.rollback();Connectioncon=sess.close();//Mudaautocommitparatrueparaatenderaowebsphere//TODOPrecisaserhomologadocomdemaisAppServerscon.setAutoCommit(true);con.close();logF.debug("############# Fechou e devolveu conexao para o pool");} catch (Exception ex) {log.fatal("Nao conseguiu devolver o pool para o App Server:"+ex);msg="erros.persistencia.geral";exc=ex;} if(!msg.equals("")) {MsgErroerro=MsgErro.getInstance();throwerro.msg(msg,new Object[] {exc},exc);}if(logTempoTransacao.isDebugEnabled()) logTempoTransacao.debug("Encerrou Classe:"+this.getClass()+" com commit em Tempo:");}
É o mesmo que vc ta fazendo, agora acho melhor vc debugar mesmo!
O debug do eclipse é Exelente, colocando um breakPoint no commit(), vc consegue ver tudo, ate os sqls que irão rodar!
Olha o que ta chegando lá!
M
MirokuPJ
eu to usando o netBeans…e eu to dando o commit direto…tx.commit();
ele faz tudo certinho…se eu manda ele imprimir o id da transação ele imprime certinho…eh só na hora do commit mesmo…e acontece a mesma coisa com o flush…
Session sess = new HibernateUtil.getSession();
Transaction tx = sessi.beginTransaction();
doxo d = new doxo();
d.setDoxo("lOLLL");
d.setLol("DoxoOO");
d.setId(1);
sess.save(d);
tx.commit();
sess.close();
M
MirokuPJ
aEWWWWWWWWWWWWWWW…finalmente…passei po eclipse e funfo…só de passa po eclipse…nem debugei nada…
valew anderson…sem vc naum teria conseguido…mto obrigado pela ajuda…