Erro: Hibernate AnnotationConfiguration

Galera,

Estou testando a conexão do Hibernate com MySQL e está apresentando o seguinte erro pra mim:

exception 

javax.servlet.ServletException: #{testeBean.doTest}: java.lang.NoSuchMethodError: org.hibernate.cfg.AnnotationConfiguration.setProperty(Ljava/lang/String;Ljava/lang/String;)Lorg/hibernate/cfg/AnnotationConfiguration;
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Não sei o que está errado na minha Annotation.

package br.entity;

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

public class HibernateUtil {
	
	private static final long serialVersionUID = 1L;
	private static HibernateUtil me;
	private SessionFactory sessionFactory;
	

	public HibernateUtil() {
		sessionFactory = new AnnotationConfiguration()
        	.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
        	.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
        	.setProperty("hibernate.connection.url", "jdbc:mysql://localhost/hibernate")  
        	.setProperty("hibernate.connection.username", "usuario")
        	.setProperty("hibernate.connection.password", "senha")
        	.setProperty("hibernate.hbm2ddl.auto", "none") //update
        	.setProperty("hibernate.show_sql", "true")
        	.setProperty("hibernate.format_sql", "true")
        	.setProperty("hibernate.c3p0.acquire_increment", "1")
        	.setProperty("hibernate.c3p0.idle_test_period", "100") 
        	.setProperty("hibernate.c3p0.max_size", "10")
        	.setProperty("hibernate.c3p0.max_statements", "0")  
        	.setProperty("hibernate.c3p0.min_size", "5")
        	.setProperty("hibernate.c3p0.timeout", "100")
        	.addAnnotatedClass(br.entity.Product.class)
        	.addAnnotatedClass(br.entity.Sale.class)
        	.addAnnotatedClass(br.entity.User.class)
        	.buildSessionFactory();  
	}
	
	public Session getSession(){
		Session toReturn = sessionFactory.openSession();
		toReturn.beginTransaction();
		return  toReturn;
	}
	 
	public static HibernateUtil getInstance(){
		if(me == null){
			me = new HibernateUtil();
		}
		return me;
	}
}

Pacotes do Hibernate que estou utilizando:
hibernate-entitymanager-3.4.0.GA
hibernate-distribution-3.3.1.GA
hibernate-annotations-3.4.0.GA

Alguém sabe o que estou fazendo de errado?!

eu fiz da seguinte maneira em um app que escrevi:

package desktopapplication1;

import java.util.Properties;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.SimpleDriverDataSource;
import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;
import javax.sql.DataSource;

@Configuration
public class SpringContext {

    @Bean
    public SessionFactory sessionFactory() {
        AnnotationSessionFactoryBean sf = new AnnotationSessionFactoryBean();
        // set database
        sf.setDataSource(dataSource());
        // set model classes
        sf.setAnnotatedClasses(new Class[]{
                    br.entity.Product.class,
                    br.entity.Sale.class,
                    br.entity.User.class
                });
        Properties hibernateConfigs = new Properties();
        hibernateConfigs.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        hibernateConfigs.put("hibernate.hbm2ddl.auto", "none"); //update   
        hibernateConfigs.put("hibernate.show_sql", "true");
        hibernateConfigs.put("hibernate.format_sql", "true");
        hibernateConfigs.put("hibernate.c3p0.acquire_increment", "1");
        hibernateConfigs.put("hibernate.c3p0.idle_test_period", "100");
        hibernateConfigs.put("hibernate.c3p0.max_size", "10");
        hibernateConfigs.put("hibernate.c3p0.max_statements", "0");
        hibernateConfigs.put("hibernate.c3p0.min_size", "5");
        hibernateConfigs.put("hibernate.c3p0.timeout", "100");
        sf.setHibernateProperties(hibernateConfigs);
        try {
            sf.afterPropertiesSet();
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
        return sf.getObject();
    }

    @Bean
    public DataSource dataSource() {
        SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost/hibernate");
        dataSource.setUsername("usuario");
        dataSource.setPassword("senha");
        return dataSource;
    }
}

da uma pesquisada por “spring java config” que acredito que irá ajudar.

[]s

Porque voce nao utiliza um arquivo XML para definir as propriedades do Hibernate e depois no seu HibernateUtil usa o sessionFactory assim:

sessionFactory = new AnnotationConfiguration().configure("br/cfg/hibernate.cfg.xml").buildSessionFactory();

[quote=leomorais]Porque voce nao utiliza um arquivo XML para definir as propriedades do Hibernate e depois no seu HibernateUtil usa o sessionFactory assim:

sessionFactory = new AnnotationConfiguration().configure("br/cfg/hibernate.cfg.xml").buildSessionFactory(); [/quote]

Na boa eu não usaria XML, um errinho qualquer e ele não te fala nada, particularmente prefiro desse modo que ele fez a XML, a solução em Spring tbm é muito boa.

Imagina vc colocar por engano um espaço no XML, já era, ele explode erro em execução em tudo que é canto e vc se mata pra descobrir que era um mero espaço 8)

no such method error geralmente significa que vc está com versões duplicadas de alguma dependência (no caso o hibernate) ou uma versão incompatível

É verdade, veja se tem essa combinação aí:

Hibernate-core: 3.3.2
Hibernate-annotation: 3.4
Hibernate-entitymanager: 3.4
Hibernate-validator: 3.1.0

coloque essas que provavelmente seu erro para :smiley:

[quote=Eduardo Bregaida][quote=leomorais]Porque voce nao utiliza um arquivo XML para definir as propriedades do Hibernate e depois no seu HibernateUtil usa o sessionFactory assim:

sessionFactory = new AnnotationConfiguration().configure("br/cfg/hibernate.cfg.xml").buildSessionFactory(); [/quote]

Na boa eu não usaria XML, um errinho qualquer e ele não te fala nada, particularmente prefiro desse modo que ele fez a XML, a solução em Spring tbm é muito boa.

Imagina vc colocar por engano um espaço no XML, já era, ele explode erro em execução em tudo que é canto e vc se mata pra descobrir que era um mero espaço 8) [/quote]

Eu uso assim e nunca me deu problemas. Mas tudo é uma questão de gosto. rsrs

[quote=leomorais][quote=Eduardo Bregaida][quote=leomorais]Porque voce nao utiliza um arquivo XML para definir as propriedades do Hibernate e depois no seu HibernateUtil usa o sessionFactory assim:

sessionFactory = new AnnotationConfiguration().configure("br/cfg/hibernate.cfg.xml").buildSessionFactory(); [/quote]

Na boa eu não usaria XML, um errinho qualquer e ele não te fala nada, particularmente prefiro desse modo que ele fez a XML, a solução em Spring tbm é muito boa.

Imagina vc colocar por engano um espaço no XML, já era, ele explode erro em execução em tudo que é canto e vc se mata pra descobrir que era um mero espaço 8) [/quote]

Eu uso assim e nunca me deu problemas. Mas tudo é uma questão de gosto. rsrs[/quote]

Ah sim, não dá problemas é gosto mesmo rsss, eu particularmente prefiro configurar na classe, mas o XML usá-lo ou não é puro gosto mesmo rs :smiley:

EDIT: O que eu quis dizer antes é que com XML um erro de digitação por exemplo poderia dar uma dor de cabeça, não que vá acontecer rsss :lol: