Erro hibernate

14 respostas
A

ae pessoal estou tentando inserir dados na minha tabela via hibernate3 e esta dando uma exception !!!

15:55:26,692 DEBUG JDBCExceptionReporter:69 - could not insert: [br.com.caelum.lojavirtual.modelo.Usuario] [insert into Usuario (login, senha, id) values (?, ?, ?)]
java.sql.SQLException: Statement parameter 3 not set.
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
	at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1035)
	at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:684)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1184)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1101)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1086)
	at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
	at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
	at br.com.caelum.lojavirtual.main.TestaUsuario.main(TestaUsuario.java:24)
15:55:26,692  WARN JDBCExceptionReporter:77 - SQL Error: 0, SQLState: S1009
15:55:26,692 ERROR JDBCExceptionReporter:78 - Statement parameter 3 not set.
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [br.com.caelum.lojavirtual.modelo.Usuario]
	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
	at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
	at br.com.caelum.lojavirtual.main.TestaUsuario.main(TestaUsuario.java:24)
Caused by: java.sql.SQLException: Statement parameter 3 not set.
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
	at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1035)
	at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:684)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1184)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1101)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1086)
	at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
	... 16 more
a minha classe para inserir tah assim
package br.com.caelum.lojavirtual.main;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

import br.com.caelum.lojavirtual.modelo.Usuario;

public class TestaUsuario {
	public static void main(String[] args) {
		// configura o hibernate
		Configuration conf = new AnnotationConfiguration();
		conf.configure();
		SessionFactory factory = conf.buildSessionFactory();
		Session session = factory.openSession();
		// cria um usuario
		Usuario u = new Usuario();
		u.setLogin("admin");
		u.setSenha("admin");
		// abre transacao e insere
		Transaction t = session.beginTransaction();
		session.save(u);
		t.commit();
		session.close();
	}
}

ae pessoal me ajudem!!!

14 Respostas

A

cara ngm consege resolver?!?!?!?!

A

simm que é o objeto id!! mais eu nao tenhu q passar o id.. olha como tah minha classe

package br.com.caelum.lojavirtual.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;


@Entity
public class Usuario {
	
	@Id
	@GeneratedValue
	private Long id;

	private String login;

	private String senha;
//get's   set's

}
aneri

Provavelmente há um erro na tabela, ela esta auto-incremente? Tenta colocar.

A
aneri:
Provavelmente há um erro na tabela, ela esta auto-incremente? Tenta colocar.
sim esta !! quando eu crio a tabela por essa classe
package br.com.caelum.lojavirtual.util;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GeraBanco {
	public static void main(String[] args) {
		Configuration conf = new AnnotationConfiguration();
		conf.configure();
		SchemaExport se = new SchemaExport(conf);
		se.create(true, true);
	}
}
ele cria o BD pra mim!! e cria autoincrement notnull primarykey
aneri

Tenta usar então a estrategia para a geração do id, segue o exemplo do nosso amigo acima. Pq você até esta definindo que vai usar a geração de id, mas não esta definindo qual.

A

cara ainda nao funciona ngm pd m ajudar???

A

???

plentz

Primeira coisa, ficar “upando” tópicos é totalmente desaconselhável.

Segundo, verifique se os seus .class estão atualizados na pasta da sua aplicação.

davidpaniz

Estou exatamente com o mesmo erro e ainda não consegui nada também… Ja deletei tudo e começei de novo, ja conferi linha a linha e até agora nada.

Se alguem conseguir por favor poste!!

Ja to quase indo la na Caelum pra ve alguem falzer!! rsrrs

davidpaniz

Desculpa pelo post duplo, mas ontem de madrugada descobri o que era…

Você deve estar usando a versao 3.2.4 do hibernate, altere para a 3.2.2 que vai começar a funcionar

plentz

Sinceridade? As chances de voltar da versão 3.2.4 pra 3.2.2 e começar a funcionar por causa disso, são praticamente nulas.

edivaldoms

Sinceridade? As chances de voltar da versão 3.2.4 pra 3.2.2 e começar a funcionar por causa disso, são praticamente nulas.

Faça o download da versão 3.2.4 sp1 que resolve isso.
Mais detalhes do bug aqui http://opensource.atlassian.com/projects/hibernate/browse/HHH-2605

dekobaya

o objeto usuario tem um atributo q vc nao esta setando e foi definido como nao nulo no banco ou no mapeamento dele

dekobaya

vc tem 3 atributos:

seu atributo id deve ficar assim:

@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id_usuario", unique = true, nullable = false, insertable = true, updatable = true)

esse exemplo é usando mysql

Criado 11 de maio de 2007
Ultima resposta 11 de mai. de 2007
Respostas 14
Participantes 6