Erro JPA com import jar

4 respostas
J

Pessoal,

Estou com um problema ao utilizar o JPA. Tenho uma aplicação web que faz uso de um .jar, que contem as classes de entidade (Entity). O arquivo META-INF/persistence.xml está da seguinte forma:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/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">

   <persistence-unit name="dbpd_pu" transaction-type="RESOURCE_LOCAL">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <properties>
         <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
         <property name="hibernate.connection.username" value="usr"/>
         <property name="hibernate.connection.password" value="pwd"/>
         <property name="hibernate.connection.url" value="jdbc:postgresql://sv-repositorio/dbds_utf8"/>
         <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.hbm2ddl.auto" value="none"/> <!--  create-drop, create, update -->
      </properties>
   </persistence-unit>
</persistence>

Ao criar o EntityManagerFactory conforme abaixo, ele fornece um erro dizendo que não está encontrando as classes de Entidade. Será que ele não está encontrando as classes porque está dentro do jar, que se encontra no classpath? Ou para este caso eu deveria fazer a referência manual dentro do persistence.xml com as tags nome da classe . Alguem já passou por este problema, e poderia me ajudar?

Agradeço a ajuda!

EntityManagerFactory emf = Persistence.createEntityManagerFactory("dbpd_pu");
        EntityManager entityManager = emf.createEntityManager();
        .....
        GenericDAO<Cidade, Integer> cbd = daoFactory.getCidadeDAO();
        Cidade cidadeOrigem = cbd.getById(25);

Quando ele tenta obter a cidade pelo entityManager, que está encapsulado no DAO, o seguinte erro é exibido:


java.lang.IllegalArgumentException: Unknown entity: com.teste.home.model.endereco.Cidade

Jukinha!

4 Respostas

vhuzalo

Amigo, vc não está mapeando a classe Cidade no seu persistence.xml.

ex.:

<class>com.teste.home.model.endereco.Cidade</class>

:thumbup:

J

É obrigatório o mapeamento das classes no persistence.xml ?

desculpe a ignorância…

Jukinha!

vhuzalo

Sim, o mapeamento é necessário, é neste local que o EntityManager busca as classes.

ps:
“Quem faz uma pergunta tola, é tolo por uns instantes.
Quem guarda pra si uma pergunta tola, é tolo para o resto da vida”
(Proverbio chinês)

Ninguém nasce sabendo, portanto não aceito o pedido de desculpas pela ignorância hueheueuheuheuheuhee

:thumbup:

D

E aí jukinha, blz?

Estava com o mesmo problema, e sua dica funcionou comigo também.

Valeu

Criado 1 de outubro de 2007
Ultima resposta 17 de set. de 2008
Respostas 4
Participantes 3