Vratpor 3 com JPA2

Pessoal,

Tirem uma dúvida simples minha.

O Vraptor 3 já tem suporte para JPA2?

Acredito que estou tendo alguns erros por causa disso e estou impacado no meu desenvolvimento.

sim, o VRaptor funciona normalmente com JPA2. Quais erros estão acontecendo?

Lucas,

Não estou com o erro completo agora aqui em mãos, mas a principal frase que ele dá é Unable to configure EntityManagerFactory.

Não sei se isso é o suficiente para determinar uma solução.

Além disso antes eu recebo um erro de PersistenceException na minha Entidade. Pelo que eu vi a Entitdade está ok.

Vou postar os meus códigos assim que possível.

“Unable to configure EntityManagerFactory” geralmente é algum problema na configuração, o erro de verdade eestá mais abaixo na stacktrace, nos caused by.

Isto é interessante.

Lembro de algo ser falado no Hibernate Validator.

Como não tenho tudo em mãos agora fica difícil descrever o erro.

No final do dia coloco todos os erros aqui para detalhar melhor.

Nada muda no VRaptor para o JPA 1 ou JPA 2, digo, não há diferença entre ambos.

Você precisa cuidar para remover todos os jars do JPA1 e deixar apenas o JPA2, além disso use uma implementação que suporte JPA2 como o Hibernate 3.5+.

Garcia,
Ja utilizo o hibernate 3.6.1(ultimo release do hibernate). Acredito que eu esteja errando na configuração. Vou colocar os codigos e configuracoes para que possam me ajudar.

Pessoal,

Vou tentar descrever aqui a estrutura do meu projeto. Eu baixei ha um tempo o Vraptor Blank Project 3.2.1 que estava no site. Estou utilizando o JBoss AS 6 e o Hibernate 3.6.1.

Estou utilizando um Datasource com as configurações do banco.

Abaixo segue o código persistence.xml

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



org.hibernate.ejb.HibernatePersistence
java:/PostgresDS
br.com.caelum.vraptor.entity.Tecnologia





[/code]

Este é o código do datasource que eu criei.

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

PostgresDS jdbc:postgresql://localhost:5432/scfp_db org.postgresql.Driver postgres admin
    <!-- sql to call on an existing pooled connection when it is obtained from pool.  Can be anything, select 1 is valid for PostgreSQL
    <check-valid-connection-sql>select 1</check-valid-connection-sql>
    -->

  <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
  <metadata>
     <type-mapping>PostgreSQL 8.4</type-mapping>
  </metadata>
[/code]

Agora segue o erro que eu estou recebendo no momento que tento salvar alguma informação no banco.

20:53:52,231 ERROR [STDERR] 179114 [http-localhost%2F127.0.0.1-8080-3] INFO cfg.AnnotationBinder  - Binding entity from annotated class: br.com.caelum.vraptor.entity.Tecnologia

20:53:52,236 ERROR [STDERR] 179119 [http-localhost%2F127.0.0.1-8080-3] INFO annotations.EntityBinder  - Bind entity br.com.caelum.vraptor.entity.Tecnologia on table Tecnologia

20:53:52,314 INFO  [STDOUT] 20:53:52,314 DEBUG [DefaultExceptionMapper] find for exception class javax.persistence.PersistenceException

20:53:52,314 ERROR [STDERR] 179197 [http-localhost%2F127.0.0.1-8080-3] DEBUG core.DefaultExceptionMapper  - find for exception class javax.persistence.PersistenceException

20:53:52,314 INFO  [STDOUT] 20:53:52,314 DEBUG [DefaultExceptionMapper] find for exception class org.hibernate.AnnotationException

20:53:52,314 ERROR [STDERR] 179197 [http-localhost%2F127.0.0.1-8080-3] DEBUG core.DefaultExceptionMapper  - find for exception class org.hibernate.AnnotationException

20:53:52,315 INFO  [STDOUT] 20:53:52,315 DEBUG [DefaultExceptionMapper] find for exception class java.lang.NoSuchMethodException

20:53:52,315 ERROR [STDERR] 179198 [http-localhost%2F127.0.0.1-8080-3] DEBUG core.DefaultExceptionMapper  - find for exception class java.lang.NoSuchMethodException

20:53:52,315 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/SCFP].[default]] Servlet.service() for servlet default threw exception: br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: javax.persistence.PersistenceException: [PersistenceUnit: scfpDB] Unable to configure EntityManagerFactory
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90) [:]
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70) [:]
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) [:]
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56) [:]
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) [:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.0.0.Final]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [:6.0.0.Final]
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.0.0.Final]
	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.0.0.Final]
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.0.0.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [:6.0.0.Final]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.0.0.Final]
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.0.0.Final]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.0.0.Final]
	at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.0.0.Final]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.0.0.Final]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.0.0.Final]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.0.0.Final]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.0.0.Final]
	at java.lang.Thread.run(Unknown Source) [:1.6.0_24]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: scfpDB] Unable to configure EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:374) [:3.6.1.Final]
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56) [:3.6.1.Final]
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48) [:1.0.0.Final]
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) [:1.0.0.Final]
	at br.com.caelum.vraptor.dao.GenericDAO.createEntityManager(GenericDAO.java:15) [:]
	at br.com.caelum.vraptor.dao.TecnologiaDAO.cadastrar(TecnologiaDAO.java:21) [:]
	at br.com.caelum.vraptor.controller.TecnologiaController.cadastrar(TecnologiaController.java:38) [:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_24]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_24]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_24]
	at java.lang.reflect.Method.invoke(Unknown Source) [:1.6.0_24]
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57) [:]
	... 49 more
Caused by: org.hibernate.AnnotationException: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
	at org.hibernate.cfg.Configuration.applyHibernateValidatorLegacyConstraintsOnDDL(Configuration.java:1651) [:3.6.1.Final]
	at org.hibernate.cfg.Configuration.applyConstraintsToDDL(Configuration.java:1623) [:3.6.1.Final]
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1415) [:3.6.1.Final]
	at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345) [:3.6.1.Final]
	at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1477) [:3.6.1.Final]
	at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193) [:3.6.1.Final]
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1096) [:3.6.1.Final]
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:278) [:3.6.1.Final]
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:362) [:3.6.1.Final]
	... 60 more
Caused by: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
	at java.lang.Class.getConstructor0(Unknown Source) [:1.6.0_24]
	at java.lang.Class.getDeclaredConstructor(Unknown Source) [:1.6.0_24]
	at org.hibernate.cfg.Configuration.applyHibernateValidatorLegacyConstraintsOnDDL(Configuration.java:1639) [:3.6.1.Final]
	... 68 more

Se alguém puder me dar uma luz sobre aonde eu estou errando vai ajudar bastante

O JBoss não vai deixar você usar outro jar do Hibernate na sua propria aplicação. Você deve apagar os jars do hibernate, javassist, slf4j-*, dom4j, antlr, commons-collections.

Isso porque o JBoss já vem com o Hibernate.

Ok. Essa eu já imaginava, mas toda vez que eu retiro o jar da minha aplicação no Eclipse, ele reclama.

Como resolvo isso? Retirar os jars do Eclipse sem quebrar.

p.s.: Sei que a pergunta é tosca, mas não consegui resolver.

Você pode adicionar uma user-library ou então adicionar os jars do hibernate que estão no jboss manualmente como “external library”.