Problemas em configurar e rodar Hibernate com Eclipse

3 respostas
paulos711
Pessoal, estou tendo problemas em configurar o Hibernate com o Eclipse e fazer um exemplo simples. O erro que estou recebendo é:
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" java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings has interface org.hibernate.cfg.Mappings as super class
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(Unknown Source)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$000(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at org.hibernate.cfg.AnnotationConfiguration.createExtendedMappings(AnnotationConfiguration.java:187)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:277)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at br.com.livrariavirtual.testes.AdicaoDeLivro.main(AdicaoDeLivro.java:15)
Meu hibernate.cfg.xml:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/livrariavirtual</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

		<mapping class="br.com.livrariavirtual.modelo.Livro"/>
	
	</session-factory>
</hibernate-configuration>
Código de modelo:
package br.com.livrariavirtual.modelo;

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

@Entity
public class Livro {

	@Id @GeneratedValue
	private Long id;
	private String titulo;
	private String descricao;
	private double preco;
	
	public String getTitulo() {
		return titulo;
	}
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Double getPreco() {
		return preco;
	}
	public void setPreco(Double preco) {
		this.preco = preco;
	}
	public Long getId() {
		return id;
	}
}
Classe que deveria adicionar livros:
package br.com.livrariavirtual.testes;

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

import br.com.livrariavirtual.modelo.Livro;

public class AdicaoDeLivro {

	public static void main(String[] args) {
		AnnotationConfiguration configuration = new AnnotationConfiguration();
		configuration.configure();
		SessionFactory factory = configuration.buildSessionFactory();
		Session session = factory.openSession();
		
		Livro livro = new Livro();
		livro.setTitulo("Aprenda Java Fácil");
		livro.setDescricao("Aprenda Java com dicas elaboradas especialmente por desenvolvedores Certificados pela Oracle e Sun.");
		livro.setPreco(95.75);
		
		Transaction tx = session.beginTransaction();
		session.save(livro);
		tx.commit();
	}
}
.jars adicionados em WEB-INF/lib:
antlr-2.7.6.jar
c3p0-0.9.1.jar
cglib-2.2.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
ejb3-persistence.jar
hibernate3.jar
hibernate-commons-annotations.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-jpamodelgen-1.0.0.Final.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
log4j-1.2.15.jar
mysql-connector-java-5.1.18-bin.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar

Agradeço antecipadamente a quem tiver alguma dica que possa me ajudar!

Bom carnaval a todos! :D

3 Respostas

mauricioadl

cara, esse erro acontece devido a libs de versoes diferentes. so nao sei te dizer qual delas eh velha ou nova.
se vc tiver uma net boa, comece a baixar novamente e tente verificar a compatibilidade delas.

veja isso:
http://www.julianjewel.com/wordpress/?p=111

calel

Nunca usei esses jars em projetos só com hibernate, tente retira-los e ver no que dá.

hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-jpamodelgen-1.0.0.Final.jar

Nesse link é explicado a compatibilidade entre versões de vários produtos com o hibernate https://community.jboss.org/wiki/HibernateCompatibilityMatrix?_sscc=t

paulos711

Pessoal, realmente, deve ser incompatibilidade entre os .jar que coloquei na lib.
Eu utilizei o .zip disponibilizado em http://blog.caelum.com.br/as-dependencias-do-hibernate-3-5 e funcionou perfeitamente.
Obrigadão pelo help!

Criado 17 de fevereiro de 2012
Ultima resposta 23 de fev. de 2012
Respostas 3
Participantes 3