Galera, estou com a seguinte dificuldade:
Na tela de Login(IndexController) tem um “cadastre-se”(EmpresaController), nele era para abrir um form de cadastro para que o usuário possa entrar no sistema
no meu controller eu tenho
@Get("/empresa/criarEmpresa")
public void novo(Empresa entity) {
result
.include("perfilList", PerfilType.values())
.include("entity", entity);
}
que é o responsável por abrir a pagina… porem recebo o erro no log do tomcat:
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'empresaBusiness': Unsatisfied dependency expressed through constructor argument with index 0 of type [javax.persistence.EntityManager]: : No matching bean of type [javax.persistence.EntityManager] 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 [javax.persistence.EntityManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
O erro é bem simples… o vraptor não conseguir criar esse controller provavelmente tem uma dependência chamada “empresaBusiness” e ela depende da sua EntityManager…
vc pode utilizar a integração com vraptor + JPA (http://vraptor.caelum.com.br/pt/docs/componentes-utilitarios-opcionais/)
EmpresaBusiness esta gerenciada pelo vRaptor:
@Component
public class EmpresaBusiness extends GenericBusiness<Empresa> implements EmpresaRepository {
public EmpresaBusiness(EntityManager manager) {
super(manager);
}
Dessa forma.
Exato, mas ele não gerencia o EntityManager.
É aí que ele dá o erro… ele precisa que alguém forneça essa entityManager
vc pode fazer como mosstrado nesse post(http://wbotelhos.com/2010/02/23/jpa-e-vraptor-3)
ou tb pode fazer com que o vraptor injete uma pra vc…
dah uma olhada na documentação.
mas se vc tiver utilizando o vraptor antes da versão 3.5 vc pode add isso no seu web.xml
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.util.jpa</param-value>
</context-param>
<context-param>
<param-name>br.com.caelum.vraptor.provider</param-name>
<param-value>br.com.caelum.vraptor.util.jpa.JPACustomProvider</param-value>
</context-param>
Segui o post do wbotelhos, adicionei o
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.util.jpa</param-value>
</context-param>
no web.xml
até onde entendi, para que as entidades sejam injetadas basta esse parametro no vRaptor sem a necessidade de criar um CustomProvider, porem na minha aplicação continua o mesmo erro.
Estou usando o VRaptor 3.5.1
Como vc está utilizando o vraptor 3.5 vc só precisa add essa dependência: (caso esteja utilizando o maven, se não, add o vraptor-jpa-1.0.0.jar na pasta lib)
<dependency>
<groupId>br.com.caelum.vraptor</groupId>
<artifactId>vraptor-jpa</artifactId>
<version>1.0.0</version>
</dependency>
Seu objeto vai continuar da msm forma.
@Component
public class EmpresaBusiness extends GenericBusiness<Empresa> implements EmpresaRepository {
public EmpresaBusiness(EntityManager manager) {
super(manager);
}
}
testa aí! abrass
Ao adicionar a dependência ele mostra no log:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactoryCreator': Invocation of init method failed; nested exception is javax.persistence.PersistenceException: No Persistence provider for EntityManager named default
Preciso adicionar alguma anotação a mais nessa nova versão ?
qual versão do hibernate vc está usando?
provavelmente está faltando alguma lib…
como está o seu pom.xml?
hibernate-core-3.6.6.Final.jar
esse é o que veio junto na pasta lib do vRaptor.
tenho um persistence.xml no src/META-INF
as libs do hibernate que tenho aqui são:
hibernate-commons-annotations-3.2.0.Final.jar
hibernate-core-3.6.6.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-validator-5.0.0.Final.jar
Não estou usando Maven…
Realmente… Faltava uma lib
a hibernate-entitymanager.jar
Obrigado pela atenção… 