2010-07-12 17 views
6

Me gustaría crear un paquete que sea capaz de usar Java Persistence. Para lograr esto, he creado un proyecto de complemento dentro de Eclipse. En mi proyecto, he creado un archivo persistence.xml en META-INF. aslo he añadido en mi manifest.mf (en los depencies) los 3 paquetes:EclipseLink: No proveedor de persistencia para EntityManager llamado

  1. javax.persistence.jar
  2. org.eclipse.persistence.jar
  3. org.eclipse.persistence.jar

Entonces, en mi Activador yo uso esta líneas para crear un EntityManager:

factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
EntityManager em = factory.createEntityManager(); 

para ejecutar mi paquete, he hecho un produ configuración ct. Cuando ejecuto mi configuración del producto, tengo este error:

javax.persistence.PersistenceException: Ningún proveedor de persistencia para las personas nombradas EntityManager

He intentado mover la ubicación de mi persistence.xml sin éxito . Parece que cualquier paquete carga el archivo persistence.xml. Tal vez, no importo los paquetes correctos?

Puede descargar mi paquete simple aquí: download

Podría ayudarme a encontrar una solución o una pista?

Respuesta

4

Trate de añadir esta etiqueta en el persistence.xml:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
+1

Gracias, pero tengo esta línea en mi persistencia.archivo xml ¿Otra solución? – user376112

2

Parece que usted no describe su unidad de persistencia en MANIFIEST.MF con JPA-PersistenceUnits: cabecera. Puede encontrar más detalles sobre EclipseLink aquí (1).

(1): http://wiki.eclipse.org/Gemini/JPA/Documentation/CreatingAnApplication

+0

He resuelto mi problema. Yo sólo tenía que poner en la ruta de clase del manifiesto esta paquetes: - persistence.jar - eclipselink.jar - mysql-connector.jar Gracias – user376112

6

he resuelto mi problema. Yo sólo tenía que poner en la ruta de clase del manifiesto esta paquetes: - persistence.jar - eclipselink.jar - mysql-connector.jar

Gracias

+0

No estoy seguro de entender hice que ha añadido un manifiesto a los jar archivos? ¿Puede elaborar un poco más? – simgineer

1

Si está ejecutando la aplicación desde dentro de Eclipse utilizando Maven, haga clic derecho en el proyecto JPA, elija Propiedades y vea si hay una opción de menú "Ensamblaje de despliegue". De ser así, haga clic en Ensamblaje de despliegue, haga clic en el botón Agregar ..., haga clic en Entradas de ruta de compilación Java y luego seleccione Dependencias de Maven. Asegúrese de que eclipselink.jar está entre las dependencias de Maven

1

Me estaba dando el mismo error en un proyecto simple que se ejecuta en Eclipse.

Resulta que agregar el directorio META-INF (que contiene persistence.xml) a mi ruta de clases era lo incorrecto.

Tienes que tener su dir contenida (o jar) en la ruta de la clase. De las fuentes de EclipseLink 2.5.1:

/** 
    * Search the classpath for persistence archives. A persistence archive is 
    * defined as any part of the class path that contains a META-INF directory 
    * with a persistence.xml file in it. Return a list of {@link Archive} 
    * representing the root of those files. It is the caller's responsibility 
    * to close all the archives. 
    * 
    * @param loader the class loader to get the class path from 
    */ 
    public static Set<Archive> findPersistenceArchives(ClassLoader loader){ 
     // allow alternate persistence location to be specified via system property. This will allow persistence units 
     // with alternate persistence xml locations to be weaved 
     String descriptorLocation = System.getProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT); 
     return findPersistenceArchives(loader, descriptorLocation); 
    } 
Cuestiones relacionadas