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
[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
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: