Olá, estou aprendendo a usar o hibernate seguindo um tutorial que cria uma classe de cadastro de aluno, porém estou me deparando com um erro que está relacionado ao BD.
A seguir estão as duas classes e o erro que foi criado, também tem o script que utilizei para criar a tabela no banco de dados.
O erro reclama que não consegui incrementar a coluna da chave primaria no BD…se eu tirar a anotação @Column continua dando o mesmo erro, sei que esta pro ai o erro, mas não tenho ideia do que fazer mais!..
espero que possam me ajudar!
Atenciosamente…
[code]package inicio_alunos;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
//Anotação que informa que a classe mapeada é persistente
@Entity
//Informando nome e esquema da tabela mapeada
@Table(name=“aluno”, schema=“anotacoes”)
public class Aluno {
// Definição do mecanismo de definição da chave primária
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
// Informa o nome da coluna mapeada para o atributo
@Column(name=“id_aluno”)
private int id;
private int matricula;
private String nome;
private int cpf;
// Construtor padrão
public Aluno(){}
// Métodos getters e setters
public int getCpf()
{ return cpf; }
public void setCpf(int cpf)
{ this.cpf = cpf; }
public int getId()
{return id; }
public void setId(int id)
{ this.id = id; }
public int getMatricula()
{ return matricula; }
public void setMatricula(int matricula)
{this.matricula = matricula;}
public String getNome()
{ return nome; }
public void setNome(String nome)
{ this.nome = nome; }
}[/code]
[code]package inicio_alunos;
//Imports de elementos para o uso do Hibernate funcionar
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
//Import da classe de domínio persistida
import inicio_alunos.Aluno;
public class Inicio {
public static void main(String[] args) {
//Cria objeto que receberá as configurações
Configuration cfg = new AnnotationConfiguration();
//Informe o arquivo XML que contém a configurações
cfg.configure("/inicio_alunos/hibernate.cfg.xml");
//Cria uma fábrica de sessões.
//Deve existir apenas uma instância na aplicação
SessionFactory sf = cfg.buildSessionFactory();
//Abre sessão com o Hibernate
Session session = sf.openSession();
//Cria uma transação
Transaction tx = session.beginTransaction();
//Cria objeto Aluno
Aluno aluno = new Aluno();
aluno.setNome(“Rala”);
aluno.setMatricula(033);
aluno.setCpf(128);
session.save(aluno); // Realiza persistência
tx.commit(); // Finaliza transação
session.close(); // Fecha sessão
}
}
[/code]
#####ERRO GERADO
[code]log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
insert
into
anotacoes.aluno
(cpf, matricula, nome)
values
(?, ?, ?)
Exception in thread “main” org.hibernate.HibernateException: The database returned no natively generated identity value
at org.hibernate.id.IdentifierGeneratorFactory.getGeneratedIdentity(IdentifierGeneratorFactory.java:33)
at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:74)
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:248)
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 inicio_alunos.Inicio.main(Inicio.java:29)
[/code]
###ARQUIVO hibernate.cfg.xml
[code]<?xml version="1.0" encoding="utf-8"?>
com.mysql.jdbc.Driver jdbc:mysql://localhost/guiserver org.hibernate.dialect.MySQLDialect true root 123456 10 [/code]CREATE TABLE anotacoes.aluno
(
id int, -- Identificador da tabela
matricula int, -- Matrícula do aluno
nome char(8) , -- Nome do aluno
cpf int, -- CPF do aluno
PRIMARY KEY (id)
)