galera já bem no finalzinho da apostila…a partir da página 113-Criando usuário…
coloquei todas as informações seguintes,mas esta dando o seguinte erro:
Error creating bean with name ‘criadorDeSessionFactory’: Invocation of init method failed; nested exception is org.hibernate.MappingException: Unable to load class declared as in the configuration:
entendi que o erro esta na classe Usuario…mas que erro é esse?e como resolver? :x
esse outro probleminha que eu citei a cima eu já resolvi(já estou conseguindo visualizar a minha página), poré na horas de cadastrar da o seguinte erro:
obs: pra ficar mais fácil esse erros surgiram por causa dos códigos que eu coloquei desde a página 113 em diante!!!
[quote=zoren]Seu UsuarioDAO deve ter a anotação @Component
e apenas uma observação: se eu não me engano, os atributos da classe não devem ser final, se eu me lembro não funciona direito[/quote]
Não tem nenhuma diferença pro VRaptor usar ou não final… pode deixar como final, é até melhor…
qto ao último erro, é o import mesmo… se colocar como org.hibernate.Session vai funcionar
Comecei a pouco tempo a estudar o Vraptor, e estou com um problema similar ao discutido neste forum.
[quote]org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘produtosController’ defined in file [/Users/lozaki/Documents/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/vraptor-blank-project/WEB-INF/classes/br/com/caelum/vraptor/blank/controller/ProdutosController.class]: Unsatisfied dependency expressed through constructor argument with index 2 of type [br.com.caelum.vraptor.blank.dao.ProdutosDAO]: : Error creating bean with name ‘produtosDAO’ defined in file [/Users/lozaki/Documents/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/vraptor-blank-project/WEB-INF/classes/br/com/caelum/vraptor/blank/dao/ProdutosDAO.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : 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: {}; nested exception is 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: {}; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘produtosDAO’ defined in file [/Users/lozaki/Documents/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/vraptor-blank-project/WEB-INF/classes/br/com/caelum/vraptor/blank/dao/ProdutosDAO.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : 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: {}; nested exception is 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: {}
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:698)
[/quote]
Tentei seguir as dicas de voces entretanto ainda estou com este problema. estou colocando meus códigos abaixo:
package br.com.caelum.vraptor.blank.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import br.com.caelum.vraptor.blank.entity.Produto;
import br.com.caelum.vraptor.ioc.Component;
@Component
public class ProdutosDAO {
private Session session;
public ProdutosDAO(Session session){
this.session = session;
}
public Produto save(Produto produto){
Serializable id = this.session.save(produto);
produto.setId((Long)id);
return produto;
}
}
package br.com.caelum.vraptor.blank.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.ApplicationContext;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.blank.dao.ProdutosDAO;
import br.com.caelum.vraptor.blank.entity.Produto;
import br.com.caelum.vraptor.ioc.Component;
@Resource
@Component
public class ProdutosController {
private Result result;
private ApplicationContext applicationContext;
private ProdutosDAO dao;
public ProdutosController(Result result, ApplicationContext applicationContext, ProdutosDAO dao){
this.applicationContext = applicationContext;
this.result = result;
this.dao = dao;
}
public void form(){
}
public void save(Produto produto){
this.dao.save(produto);
this.result.redirectTo(ProdutosController.class).list();
}
public List<Produto> list() {
List<Produto> prodList = new ArrayList<Produto>();
Produto p = new Produto();
p.setNome("N teste");
p.setDescricao("D teste");
prodList.add(p);
result.include("teste", "teste");
return this.dao.list();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>vraptor-blank-project</display-name>
<!--
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>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext.xml
</param-value>
</context-param>
<!--
-->
<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
-->
<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>
</web-app>
se vc vai usar o spring pra gerenciar as sessões do Hibernate, vc precisa usar o jeito do spring: ou seus daos vao estender HibernateDaoSupport, ou vc recebe o HibernateTemplate (do Spring) no construtor…
se não funcionar receber o HibernateTemplate, vc vai receber um SessionFactory, e dar new HibernateTemplate(sessionFactory);
Tentei fazer o meu DAO estender de HibernateDaoSupport, entretanto obtive a mensagem de erro abaixo:
“
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: ‘sessionFactory’ or ‘hibernateTemplate’ is required
”
Tentei fazer o meu DAO receber o HibernateTemplate e o SessionFactory entretanto não funcionou dando a seguinte mensagem de erro:
“
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘produtosController’ defined in file [/Users/lozaki/Documents/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/vraptor-blank-project/WEB-INF/classes/br/com/caelum/vraptor/blank/controller/ProdutosController.class]: Unsatisfied dependency expressed through constructor argument with index 2 of type [br.com.caelum.vraptor.blank.dao.ProdutosDAO]: : Error creating bean with name ‘produtosDAO’ defined in file [/Users/lozaki/Documents/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/vraptor-blank-project/WEB-INF/classes/br/com/caelum/vraptor/blank/dao/ProdutosDAO.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No matching bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)}; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘produtosDAO’ defined in file [/Users/lozaki/Documents/Projetos/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/vraptor-blank-project/WEB-INF/classes/br/com/caelum/vraptor/blank/dao/ProdutosDAO.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No matching bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)}
”
Estou achando que o as configurações do applicationContext.xml, não estão sendo carregadas, pois quando eu tento colocar os listeners abaixo no web.xml, eu consigo identificar umas linhas no console que indicam que o applicationContext.xml está sendo carregado, entretanto com esses listeners o sistema não funciona.