Olá pessoal , após uma semana longe , voltei a estudar VRaptor…
Porém ao tentar fazer uma listagem simples estou tendo problemas(provavelmente com o Spring).
O Dao esta anotado como Component(creio que seja para liberar acesso ao VRaptor para pode instanciar o DAO em uma dependencia).
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.Session] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)
... 54 more
O Controller
[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 ProdutosController(ProdutoDAO dao){
this.dao = dao;
}
public List<Produto> lista() {
return dao.listaTudo();
}
}
[/code]
e 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 Session session;
public ProdutoDAO(Session session) {
this.session = CriadorDeSession.getSession();
}
public void salva(Session session, Produto produto) {
Transaction tx = session.beginTransaction();
session.save(produto);
tx.commit();
}
public void deletaProduto(Session session, Produto produto) {
Transaction tx = session.beginTransaction();
session.delete(produto);
tx.commit();
}
public void alteraProdutos(Session session, Produto produto) {
Transaction tx = session.beginTransaction();
produto.setPreco(42.50);
session.update(produto);
tx.commit();
}
public List<Produto> listaTudo() {
return this.session.createCriteria(Produto.class).list();
}
}
[/code]