Erro na inserção com hibernate

9 respostas
B

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

9 Respostas

C

Posta alguma parte do codigo.

B

Essa é minha classe Main ondeestou executando os métodos

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

Essa é minha classe Aluno

@Entity
@Table(name="aluno",schema="hibernate")
public class Aluno {
	

//O campo id tem o mesmo nome na tabela do mysql

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

Esse é meu hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<!-- properties -->
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<property name="connection.url">
			jdbc:mysql://localhost:3306/hibernate
		</property>
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="show_sql">true</property>
		<property name="connection.username">root</property>
		<property name="connection.password"></property>
		<property name="connection.pool_size">10</property>
		<!-- mapping classes -->
		<mapping
			class="hiber.Aluno" />
	</session-factory>
</hibernate-configuration>
C

Onde voce está indicando onde que está o arquivo de configuração do hibernate?

public class HibernateUtil {
	public static Logger logger = Logger.getLogger(HibernateUtil.class);
	public static SessionFactory factory;
	
	static {
		factory = new AnnotationConfiguration().	configure("org/hibernate/cfg/hibernate.cfg.xml").buildSessionFactory();
	}
	
	public static Session getSession(){
		return factory.openSession();
	}
}
B

Eu coloquei meu hibernate.cfg.xml dentro da pasta src, e apenas com o cfg.configure(), parece que carregou, pois somente acontece erro quando
executo session.save().

Eu estou usando annotations.
Pelo que poer

Configuration cfg = new AnnotationConfiguration();
cfg.configure();

SessionFactory sf = cfg.buildSessionFactory();

Session session = sf.openSession();

Transaction tx = session.beginTransaction();

Aluno aluno = new Aluno();

aluno.setId(1);

aluno.setCpf(1234343);

aluno.setNome(“berdam”);

aluno.setMatricula(123);
session.save(aluno);

tx.commit();

session.close();
C

Tenta passar a String do caminho do arquivo de configuração do Hibernate.

M

Coloque mais detalhe da exceção… facilita, pois fica difícil testar seu código.

:joia:

B

Olá pessoal obrigado pelas respostas.

Tirei uma foto da tela para ficar mais fácil.

Neste link, eu coloquei a string do hibernate.cfg.xml na método configure.
e deu erro no prompt, vejam.

http://www.unoescxxe.edu.br/~berdam/java/java.PNG

Neste outro link eu tirei a string do arquivo hibernate.cfg.xml do método configure, parece que ele carrega o arquivo e vai realizar a inserção, mas falta justamente o campo id da tabela.

http://www.unoescxxe.edu.br/~berdam/java/java2.PNG

B

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.

C

^^

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