Problema submit Vraptor

Olá amigos…

estou com um problema ,ao fazer o submit de um formulario , deveria ser adicionado um produto ao Banco de Dados , mas ao invez disto esta retornando erro 500.

Formulario:

[code]<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>

Insert title here Adicionar Produto Nome: Descrição: Preço: Enviar [/code]

Controller do Produto

[code]package br.com.caelum.goodbuy.controller;

import java.util.List;

import br.com.caelum.goodbuy.infra.ProdutoDAO;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Resource;

@Resource
public class ProdutosController {
private final ProdutoDAO dao;

public void formulario(){
	
}

public ProdutosController(ProdutoDAO dao) {
	this.dao = dao;
}

public List<Produto> lista() {
	return dao.listaTudo();

}

public void adiciona(Produto produto){
	dao.salva(produto);
	
	
}

}
[/code]

O DAO

[code]package br.com.caelum.goodbuy.infra;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.ioc.Component;
@Component
public class ProdutoDAO {
private final Session session;

public ProdutoDAO() {
	this.session = CriadorDeSession.getSession();
}
 public List<Produto> listaTudo() {
        return this.session.createCriteria(Produto.class).list();
}

public void salva(Produto produto) {
	Transaction tx = session.beginTransaction();
	session.save(produto);
	tx.commit();
}

public  void remove(Produto p) {
	Transaction tx = session.beginTransaction();
	session.delete(p);
	tx.commit();
}

public void alteraPreco(Produto p, double preco){
	Transaction tx = session.beginTransaction();
	p.setPreco(preco);
	session.update(p);
	
	tx.commit();

	
}

}
[/code]

e a classe produto

[code]package br.com.caelum.goodbuy.modelo;

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

@Entity
public class Produto {
@Id @GeneratedValue
private Long id;

private String nome;

private String descricao;

private Double preco;

public Long getId() {
	return id;
}

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

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

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;
}

}
[/code]

O mais estranho que ao testar local, obtive o mesmo problema o0

public class AdicaoDeProduto {
	public static void main(String[] args) {


		Session session = CriadorDeSession.getSession();
	
		Produto prateleira = criaProduto();
		
		new ProdutoDAO().salva(prateleira);
		
	}

	

	private static Produto criaProduto() {
		Produto prateleira = new Produto();
		
		prateleira.setNome("Furadeira BD");
		prateleira.setDescricao("Furadeira Black & Decker 220w");
		prateleira.setPreco(139.99);
		return prateleira;
	}

Segue a Stacktrace…nao existe Method?

Caused by: java.lang.NoSuchMethodError: org.hibernate.event.PreInsertEvent.getSource()Lorg/hibernate/engine/SessionImplementor; at org.hibernate.validator.event.ValidateEventListener.onPreInsert(ValidateEventListener.java:172) at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:160) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:65) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697) at br.com.caelum.goodbuy.infra.ProdutoDAO.salva(ProdutoDAO.java:24) at br.com.caelum.goodbuy.controller.ProdutosController.adiciona(ProdutosController.java:27) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61) ... 41 more

A action do form está executando o método adiciona?

Sim , e como tentei local e me retornou o mesmo erro, creio que o problema seja no DAO, mas e estranho pq estava funcionando…

Caused by: java.lang.NoSuchMethodError: org.hibernate.event.PreInsertEvent.getSource()Lorg/hibernate/engine/SessionImplementor;

isso geralmente é problema de conflito de versão de jars… vc deve estar com 2 versões do hibernate, ou com a versão errada dele.

Opa lucas , irei verificar assim que chegar da facul , mas creio que seja isto.

Acabei de ver lucas e estou somente com o Hibernate 4.0.1 …

Estes sao os Jars que tenho na minha Lib…

O Log4J tambem esta reclamando de algo.

log4j:WARN No appenders could be found for logger (org.hibernate.type.BasicTypeRegistry). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.event.PreInsertEvent.getSource()Lorg/hibernate/engine/SessionImplementor; at org.hibernate.validator.event.ValidateEventListener.onPreInsert(ValidateEventListener.java:172) at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:160) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:65) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697) at br.com.caelum.goodbuy.infra.ProdutoDAO.salva(ProdutoDAO.java:24) at br.com.caelum.goodbuy.testes.AdicaoDeProduto.main(AdicaoDeProduto.java:19)

talvez o vraptor não seja compatível com o hibernate 4.x

tenta rodar com o 3.6.x, ou se você estiver dentro do jboss, simplesmente remova todos os jars do hibernate, ele já vai ter impl do hibernate lá dentro

Opa , assim que voltar da faculdade irei repor os jars , acabei deletando todos os jars e irei repor com a versão 3.6.x

Nem era isto…cansei , todo dia um problema com jar com isso com aquilo…

Vou ver se acho um material bom de JSF e Spring.

Boa sorte então :wink:

só que esse problema não tem nada a ver com o VRaptor… se vc tirar o jar do VRaptor e colocar as coisas do spring e JSF vai acontecer a mesma coisa.

Bem vindo ao java, clash de versões diferentes de jar vão acontecer toda hora, vc precisa aprender a conviver com isso…

de novo, se vc estiver usando jboss, é só tirar o jar do hibernate que funciona, pq ele já está lá.

To usando Tomcat…cara eu ja mudei dos jars para a 3,6 e nada …nao to afim de refazer o “Projeto”

pelas imagens que você mandou, só alguns dos jars estão no classpath…

vc colocou os jars na pasta WEB-INF/lib? está com jars referenciados no build path direto?

tire os jars referenciados, e jogue todos no WEB-INF/lib