ayuda con jpa entitymanagerfactory

guialv
01 de Septiembre del 2009
Hola, estoy comenzando con JPA. Estoy utilizando Netbeans 6.0 para crear las clases de entidad y el persistence.xml. Mi base de datos está en postgres 8.3. La librería que uso es toplink que viene incluida en el Netbeans. Estoy trabajando en una aplicación de escritorio (entorno J2SE). El problema es que cuando intento crear un EntityManagerFactory llamando al método javax.persistence.Persistence.createEntityManagerFactory, ocurre el siguiente error:

No Persistence provider for EntityManager named CorrespondenciaPU: The following providers:
oracle.toplink.essentials.PersistenceProvider
oracle.toplink.essentials.PersistenceProvider
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
Returned null to createEntityManagerFactory.

La clase con la que intento hacer la conexión es:
public class ManejadorCiudades {

private EntityManagerFactory emf =
Persistence.createEntityManagerFactory("CorrespondenciaPU");

private EntityManager manejador;

public void ManejadorCiudades() {

manejador = (EntityManager) emf.createEntityManager();
}
}

El archivo de persistencia es:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" 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">
<persistence-unit name="CorrespondenciaPU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>correspondencia.Archivo</class>
<class>correspondencia.Ciudades</class>
<properties>
<property name="toplink.jdbc.user" value="corponarino"/>
<property name="toplink.jdbc.password" value="corpoadmin"/>
<property name="toplink.jdbc.url" value="jdbc:postgresql://localhost:5432/correspondencia"/>
<property name="toplink.jdbc.driver" value="org.postgresql.Driver"/>
<property name="toplink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>

Espero que alguien me pueda ayudar porque ya he intentado de todo y no me funciona

Alberto
01 de Septiembre del 2009
Para solucionar ese error tienes que copiar tu directorio META-INF con su fichero persistence.xml en el directorio bin, es decir donde tu IDE coloca las clases ya compiladas. Por alguna razón, tu IDE pasa olímpicamente de ese directorio, me imagino que al ser un directorio usado para aplicaciones J2EE, tu IDE lo ignora, ya que el proyecto es J2SE. En fin, que o bien lo copias manualmente o le dices a tu IDE que cuando compile, que te copie también dicho directorio.