java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;
vc tá com hibernate 4?
vc tá com mais de uma versão do hibernate no classpath?
java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;
vc tá com hibernate 4?
vc tá com mais de uma versão do hibernate no classpath?
Meus arquivos:
web.xml
[code]<?xml version="1.0" encoding="UTF-8"?>
vraptor-blank-project
<!--
VRaptor will scan classpath for all @Component and
@Resource inside WEB-INF/classes
If you want to load them also from WEB-INF/lib/ jars,
you need to specify from which packages they will
be loaded, comma separated:
-->
<!--
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.blank</param-value>
</context-param>
-->
<!--
if you are using a servlet 3.0 container
as glassfish 3 or jetty 8, you dont need this
filter configuration
-->
<!-- <context-param>
<param-name>br.com.caelum.vraptor.provider</param-name>
<param-value>br.com.caelum.vraptor.ioc.guice.GuiceProvider</param-value>
</context-param>-->
<!-- <context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.util.hibernate</param-value>
</context-param> -->
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.util.hibernate</param-value>
</context-param>
<filter>
<filter-name>vraptor</filter-name>
<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
</filter>
<filter-mapping>
<filter-name>vraptor</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
[/code]
Arquivos de conexão:
[code]package br.com.nightclub.infra;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
@Component
public class CriadorDeSession implements ComponentFactory{
private final SessionFactory factory;
public CriadorDeSession(SessionFactory factory) {
this.factory = factory;
}
public Session getInstance() {
return factory.openSession();
}
}[/code]
[code]package br.com.nightclub.infra;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import br.com.caelum.vraptor.ioc.ComponentFactory;
public class CriadorDeSessionFactory implements ComponentFactory {
public SessionFactory getInstance() {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
SessionFactory factory = configuration.buildSessionFactory();
return factory;
}
}
[/code]
arquivo do hibernate
[code]
root senha jdbc:mysql://localhost/teste com.mysql.jdbc.Driver org.hibernate.dialect.MySQL5InnoDBDialect update true true[/code]
Meu dao
[code]package br.com.nightclub.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.caelum.vraptor.ioc.Component;
import br.com.nightclub.dto.Produto;
@Component
public class ProdutoDao {
private final Session session;
public ProdutoDao(Session session) {
this.session = session;
}
public void salvaProduto(Produto produto) {
Transaction tx = session.beginTransaction();
session.save(produto);
tx.commit();
}
public void atualizarProduto(Produto produto) {
Transaction tx = session.beginTransaction();
session.update(produto);
tx.commit();
}
public void removerProduto(Produto produto) {
Transaction tx = session.beginTransaction();
session.delete(produto);
tx.commit();
}
public Produto carregarProduto() {
Produto produto = (Produto) session.load(Produto.class, 1L);
return produto;
}
public List<Produto> listaTudo() {
return this.session.createCriteria(Produto.class).list();
}
}
[/code]
velho eu já tentei fazer varias coisas aqui e nada, fiz um projeto novo sem o maven coloquei na mao os jars e nada, ta tenso
vlw !!!
vc tá com o hibernate 4, e o plugin normal do hibernate só funciona com o 3…
remova o pacote do hibernate do web.xml e anote sua CriadorDeSessionFactory com @Component e veja se funciona…
vc tá fazendo o deploy em algum servidor de aplicação, tipo o JBoss ou o Glassfish? se sim, vc deveria tirar os jars do hibernate.
Deu certo amigo, muito obrigado pela ajuda !!!
Estou usando o tomcat só.
vlw !!