Erro ao criar EntityManagerFactory com persistencia do tipo JTA

6 respostas
R

Pessoal vcs ja usaram JPA do tipo JTA sem ser por injeção de dependecia, tipo:

EntityManagerFactory factory = Persistence.createEntityManagerFactory(“compra_obras_pu”);
e a patir do factory pegar o Entityanager

da erro dizendo que nao tem provider para a persistence:

Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named compra_obras_pu: The following providers:
oracle.toplink.essentials.PersistenceProvider
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
Returned null to createEntityManagerFactory.

6 Respostas

C

rafaelmeireles:
Pessoal vcs ja usaram JPA do tipo JTA sem ser por injeção de dependecia, tipo:

EntityManagerFactory factory = Persistence.createEntityManagerFactory("compra_obras_pu");
e a patir do factory pegar o Entityanager

da erro dizendo que nao tem provider para a persistence:

Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named compra_obras_pu: The following providers:
oracle.toplink.essentials.PersistenceProvider
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
Returned null to createEntityManagerFactory.

Rafael,

Eu utilizo assim para conseguir o factory do EntityManager. O que está parecendo pela exceção mostrada é que vc não está com seu file descriptor (persistence.xml) no lugar certo ou ele não existe.

O arquivo persistence.xml deve estar dentro do diretório META-INF\persistence.xml qdo fizer o deploy ele deve estar em classes\META-INF\persistence.xml

Exemplo de persistence.xml caso vc não o tenha.

<?xml version="1.0" encoding="windows-1252" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
             version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
  <persistence-unit name="compra_obras_pu">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="none"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect"/>
      <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
      <property name="hibernate.connection.username" value="usuario"/>
      <property name="hibernate.connection.password" value="senha"/>
      <property name="hibernate.connection.url" value="jdbc:oracle:thin:@//localhost:1521/SERVICE"/>
    </properties>
  </persistence-unit>
</persistence>

@braços,
Cleiton

R

kra tenho sim e no lugar certo, tanto que com injeção de dependencia funciona!!!
testei em um projeto web e funciona, porem no projeto EJB não.

T

porque vc não pode injetar???

R

pq estou usando DAO, e a menos que meu DAO seja um EJB naum da pra injetar

R

to com mesmo problema vc conseguiu resolver?

Ferryman

Qual seria o problema fazer o Dao ser um Stateless?

Criado 27 de outubro de 2007
Ultima resposta 16 de out. de 2009
Respostas 6
Participantes 5