Re:Erro na inserção com hibernate

9 respostas
fabiel

aew brother coloca o trecho do codigo que esta
com problema para podermos visualizar melhor p problema.

9 Respostas

fabiel

no mapeamento do hibernate vc especificou o campo id para que ele use sequencia ?

Leandro_Carvalho

Eu acho que é alguma coisa com o Identity, acho que tem que ter criada alguma coisa no banco pra que ele saiba qual é o próximo valor do Id…

Tenta tirar os annotations de generatedvalue (e o do column name acho que não precisa):

@Id
private int id;
private int matricula;
private String nome;
private int cpf;

E aí passa um valor válido na mão mesmo pro Id…

aluno.setId(1);
aluno.setNome("berdam");
aluno.setMatricula(123);
aluno.setCpf(1234343);

Aí saberemos que ele não tá conseguindo gerar o Id sozinho e pelo menos vc já sabe onde procurar depois…

Desculpa se a resposta foi óbvia ou não ajudou muito… :confused:

acdesouza

Tenta o seguinte:

  1. Mude a anotação que define a forma de geração do ID do objeto
    De:
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Para:
    @GeneratedValue()

  2. Manda o Hibernate gerar as tabelas e veja se deu certo.

berdam

Galera, iniciei com hibernate e consegui fazer ele funcionar, mas aconteceu isso, eu tenho 4 campos na tabela (id,cpf,matricula,nome), ele só está inserindo 3 (cpf, matricula, nome), acredito que deve ser alguma coisa de configuração, estou usando Mysql.

Hibernate: insert into hibernate.aluno (cpf, matricula, nome) values (?, ?, ?)

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread “main” org.hibernate.exception.GenericJDBCException: could not insert: [hiber.Aluno]

Se alguém ajudar eu agradeço

valeu

berdam

Fiz alguns testes e o erro acontece no session.save, parece que falta o campo ID no comando SQL do hibernate.

Configuration cfg = new AnnotationConfiguration();
	cfg.configure();
	
	SessionFactory sf = cfg.buildSessionFactory();
	Session session = sf.openSession();
	Transaction tx = session.beginTransaction();
	
	Aluno aluno = new Aluno();
	
	aluno.setId(0);
	aluno.setNome("berdam");
	aluno.setMatricula(123);
	aluno.setCpf(1234343);
	
	
	session.save(aluno);
	tx.commit();
	session.close();
berdam

Na minha classe Aluno está dessa maneira

@Entity

@Table(name=aluno,schema=hibernate)

public class Aluno {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
private int matricula;
private String nome;
private int cpf;
berdam

Nenhuma dica ai galera??

berdam

Fiz uns teste aqui
acessei o mysql pelo query browser e inseri uma linha com alguns dados.
No eclipse tentei realizar um update e deu certo, portanto acredito que seja erro na geração de uma nova id.

berdam

Galera, cometi uma gafe aqui, setei o campo ip como primary key, mas não como auto incremento no mysql.
Arrumei a parada lá e resolveu a situacão.

valeu pela ajuda e desculpe esse rolo todo.

Criado 13 de setembro de 2007
Ultima resposta 14 de set. de 2007
Respostas 9
Participantes 4