olahH
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!
[code]<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="dot.modelo.cartao" table="cartao">
<id name="id">
<generator class="increment"/>
</id>
<property name="dia" column="dia"/>
<property name="entrada" column="entrada"/>
<property name="retInt" column="retint"/>
<property name="saida" column="saida"/>
<property name="th" column="th"/>
</class>
</hibernate-mapping>[/code]
meu id:
primary key, not null, tinyint(3), auto increment
Muda o <generator class=“increment”/>
para assigned, ou deixa em branco!
parece q o problema do id foi resolvido…mas ele tah dando nullpointerexception
Hibernate: /*insert dot.modelo.doxo*/insert into doxo (doxo, lol, id) values (?, ?, ?)
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [dot.modelo.doxo]
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.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1839)
at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:2171)
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:669)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:293)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
at dot.Main.main(Main.java:70)
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)
... 1 more
eu fis ateh um otro VO pa testa…mas tah dando a mesma coisa…
pa salva eu to fz assim
[code]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();[/code]
Cara, ta melhorando, faz um teste, atribui um valor pro id tb!
Mesmo que ele gere sozinho, só para nao dar nullpointerException!
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
2005-08-18 10:49:48,359 DEBUG MySQL -> <-- RowDataStatic.java:89 com.mysql.jdbc.RowDataStatic.close(..) returning null
2005-08-18 10:49:48,359 DEBUG MySQL -> <-- ResultSet.java:6319 com.mysql.jdbc.ResultSet.realClose(..) returning null
2005-08-18 10:49:48,359 DEBUG MySQL -> <-- ResultSet.java:715 com.mysql.jdbc.ResultSet.close(..) returning null
2005-08-18 10:49:48,359 DEBUG hibernate.util.JDBCExceptionReporter -> SQL Exception
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??
Nao desiste nao, depois da primeira transação gravando o resto vai de vento e poupa!
Posta o log do ultimo erro ai!!
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:
76 session.flush();
77 tx.commit();
78 session.close();
Cara,
olha meu metodo commit:
protected void commit(Session sess, Transaction tx) throws Exception {
logF.debug("#################### Entrou no evento commit");
Exception exc = new Exception();
String msg = "";
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 {
// Setando o autoCommit para falso devido a erro com o mysql
// se a transacao for nula entao considera que o objeto esta sendo
// com CMP
if (tx!=null)
sess.connection().setAutoCommit(false);
if (tx!=null) tx.rollback();
Connection con = sess.close();
// Muda autocommit para true para atender ao websphere
// TODO Precisa ser homologado com demais App Servers
con.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("")) {
MsgErro erro = MsgErro.getInstance();
throw erro.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á!
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();
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…

É isso aê cara!
Tamo ai pra isso Mermo!!!
Flow!!