Problema com Hibernate

Buenas galera…

Será que alguém pode me ajudar sobre o seguinte erro que está ocorrendo?

exception

javax.servlet.ServletException: Servlet execution threw an exception

root cause

java.lang.NoSuchMethodError: org.hibernate.util.ReflectHelper.classForName(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Class;
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:752)
app.util.HibernateFactory.(HibernateFactory.java:17)
app.PessoaIncludeHibernate.execute(PessoaIncludeHibernate.java:24)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

[/code]

Sinceramente eu não faço idéia do que está ocorrendo, estou seguindo a risca uma apostila e não sei o que fazer…

Qualquer coisa eu posto o meu codigo…

vlw pessoal…

Deve ser algum problema no mapeamento da classe… crie todos os métodos getters e setters dos atributos da classe e mapeie os métodos getters corretamente.

Qualquer coisa posta o código ai…

Andre eu não deu certo ou eu não fiz alguma coisa certa.

vou estar mandando o meu código. vlw cara!

Pessoa.hbm.xml

[code]

<?xml version="1.0" encoding="UTF-8"?> [/code]

Meu Hibernate.cfg.xml

[code]

<?xml version="1.0" encoding="UTF-8"?> com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/db_java org.hibernate.dialect.MySQLDialect root true true [/code]

Meu bean Pessoa

package app.bean;

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



@Entity
public class Pessoa {
	@Id
	@GeneratedValue
	private int id;
	private String nome;
	private String email;
	private String telefone;
	
	public String getNome(){
		return nome;
	}
	
	public void setNome(String nome){
		this.nome = nome;
	}
	
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
}

Meu HibernateFactory

public class HibernateFactory {

		private static SessionFactory factory;
		
		//cria configuração para a classe pessoa
		static{
			AnnotationConfiguration cfg = new AnnotationConfiguration();
			cfg.addAnnotatedClass(Pessoa.class);
			factory = cfg.buildSessionFactory();
		}
		
		public Session getSession(){
			return factory.openSession();
		}
}

e por último o Action do Struts

public class PessoaIncludeHibernate extends Action{
public String nome, email, telefone;
	
	public ActionForward execute(ActionMapping mapping, 
			 ActionForm form,
			 HttpServletRequest req,
			 HttpServletResponse res){
		
		
		Session session = new HibernateFactory().getSession();
		
		//recebe os dados do formulario...
		PessoaForm pessoaForm = (PessoaForm)  form;
		
		nome = pessoaForm.getNome();
		telefone = pessoaForm.getTelefone();
		email = pessoaForm.getEmail();
		
		
		//envia informações para o Bean...
		Pessoa pessoa = new Pessoa();
		
		pessoa.setNome(nome);
		pessoa.setTelefone(telefone);
		pessoa.setEmail(email);
	
		session.save(pessoa);
		session.close();
		
		
		return mapping.findForward("incluir");
	}

Bom o código é esse…

vlw!

Cara q apostila vc esta seguindo…

Vc esta usando annotations na sua classe Pessoa…não precisa criar o arquivo pessoa.hbm.xml

Vc importou todos os jars do hibernate core (hibernate.jar mais todos os libs da pasta lib dentro do hibernata) e todas as libs do hibernate annotations

DICA VALIOSA: se vc não possui muita experiência com hibernate não comece usando hibernate+struts…crie uma classe de teste com um método public static void main e faça os teste nela…quando funcionar vc põe na sua action

vlw a dica Giulliano,

Estou usando a apostila 21 da caelum, eu vou tentar fazer sem utilizar o Struts.

Eu importei tudo sim, peguei todos os .jar existentes e coloquei no meu projeto.

Mas eu usando o Hibernate com Annotation e eu possuir arquivos .hbm.xml, isso influencia no erro tb?

flw…

Kra reafirmo o que o camarada acima disse! eu sempre uso aki o hbm.xml… por padrão da galera aki! a maioria vence né!!! hahaha

seguinte…

no seu hibernate.cfg se não me engano tem q referenciar a o hbm q trabalha

ae nesse caso eu rancaria as anotações (NÃO TENHO NADA CONTRA!) só por costme de usar aki!

no demais se precisar tenho uma apostila fera em pt aki comigo!

o valor unitário seria de 500 reais! ahahaahah zuera!

só pedir!

abraço

kdu

kdu, gostaria de dar uma olhada nessa apostila sim, manda para mim???

A realidade é o seguinte eu estou aprendendo tudo ainda, tanto o Struts como o Hibernate, a minha maior preocupação é com o mercado de trabalho, ou seja, o que vcs programadores mais experientes utilizam…

Segundo vc utilizam-se mais o Hbm, certo?

flw!

kra aki a galera usa só .hbm.xml… não vejo mta treta nisso!
acho bacana até!

não sou experiente na área não kra… tenho pouco tempo de java… mas pelo q percebi a galera usa mto anotations…

seria legal levantar isso me interesso tb nessa parada!

mandei pra vc as paradas!

abraço

kdu

Fala pessoal, estou passando por um problema parecido mas não consigo resolver.

Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.util.ReflectHelper.classForName(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Class; at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:788) at teste.AdicionaEmail.main(AdicionaEmail.java:24)

estou fazendo o projeto no netbeans e já peguei todos os arquivos pelo próprio netbeans, por isso creio que o problema nao seja com a lib
segue minhas classes se alguem puder me ajudar

[code]@Entity
public class Email implements Serializable{

@Id @GeneratedValue
private int id;
private String assunto;
private String texto;
private String anexo;

//getters e setters

[/code]

[code]<?xml version="1.0" encoding="UTF-8"?>

org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/bdcatalogos root cadesbarneia [/code]

classe de teste

[code]public class AdicionaEmail {

public static void main(String[] args) {

    AnnotationConfiguration hibernate = new AnnotationConfiguration();
    hibernate.configure();

    SessionFactory factory = hibernate.buildSessionFactory(); // AQUI ELE GERA A EXCEPTION
    Session sessao = factory.openSession();

    Email email = new Email();
    email.setAssunto("Teste");
    email.setTexto("Teste");
    email.setAnexo("teste");

    Transaction tr = sessao.beginTransaction();
    sessao.save(email);
    tr.commit();

}

}[/code]

MARQUEI A LINHA NA QUAL ELE TRAZ A EXCEPTION = SessionFactory factory = hibernate.buildSessionFactory();

E aih Rafael,
Cara use a classe HibernateUtil

public class HibernateUtil {

    private static final SessionFactory sessionFactory;
    
    static {
        try {
            // Create the SessionFactory from standard (hibernate.cfg.xml) 
            // config file.
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log the exception. 
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    
    public static Session getSessionFactory() {
        return sessionFactory.openSession();
    }
}

Na classe Main use apenas

Session sessao = new HibernateUtil().getSessionFactory();

Tente isso.

Falow