Tengo mi persistence.xml
con el mismo nombre TopLink
en el META-INF
directorio. Entonces, tengo mi código llamándolo con:
EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");
Sin embargo, recibí el siguiente mensaje de error:
2009-07-21 09: 22: 41,018 [main] ERROR - Sin proveedor de persistencia para EntityManager llamado agisdb javax.persistence.PersistenceException: sin proveedor de persistencia para EntityManager llamado agisdb en javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:89) en javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60)
Aquí está el persistence.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="agisdb">
<class>com.agis.livedb.domain.AddressEntity</class>
<class>com.agis.livedb.domain.TrafficCameraEntity</class>
<class>com.agis.livedb.domain.TrafficPhotoEntity</class>
<class>com.agis.livedb.domain.TrafficReportEntity</class>
<properties>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.jdbc.user" value="root"/>
<property name="toplink.jdbc.password" value="password"/>
</properties>
</persistence-unit>
</persistence>
Debería haber estado en el classpath. Sin embargo, obtuve el error anterior.
java
jpa
persistence
toplink
Robert A Henru
fuente
fuente
<provider/>
, mientras que usando hibernate-4 debes cambiar tu proveedor<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
, consulta stackoverflow.com/questions/23041964/… .Ponga
"hibernate-entitymanager.jar"
en el classpath de la aplicación.Para las versiones más recientes, debe usar en
"hibernate-core.jar"
lugar de las obsoletashibernate-entitymanager
Si está ejecutando algún IDE, como Eclipse :
Project Properties -> Java Build Path -> Libraries.
De lo contrario, póngalo en
/lib
su aplicación.fuente
org.hibernate
artifactid groupidhibernate-entitymanager
org.eclipse.persistence.jpa
con prueba de alcance.Asegúrese de que el
persistence.xml
archivo esté en el directorio:<webroot>/WEB-INF/classes/META-INF
fuente
Necesitaba esto en mi archivo pom.xml:
fuente
Enfrenté el mismo problema y no pude encontrar la solución durante mucho tiempo En mi caso ayudó a reemplazar
con
Tomó una solución desde aquí
fuente
Hay otro punto: si enfrenta este problema dentro de un entorno Eclipse RCP, es posible que tenga que cambiar la generación Factory de
Persistence.createEntityManagerFactory
anew PersistenceProvider().createEntityManagerFactory
ver ECF para una discusión detallada sobre esto.
fuente
Tal vez definió un proveedor como
<provider>org.hibernate.ejb.HibernatePersistence</provider>
pero haciendo referencia a otro en jar. Eso sucedió conmigo: mi proveedor persistence.xml era openjpa pero estaba usando eclipselink en mi classpath. ¡Espero que esto ayude!fuente
Consejo rapido:
Con el uso de JPA en una aplicación independiente (fuera de JavaEE), se debe especificar un proveedor de persistencia en alguna parte. Esto se puede hacer de dos maneras que yo sepa:
<provider>org.hibernate.ejb.HibernatePersistence</provider>
(como se describe en la respuesta correcta de Chris: https://stackoverflow.com/a/1285436/784594 )En mi caso, descubrí que debido a la mala configuración de Maven, el jar hibernate-entitymanager no se incluía como una dependencia, incluso si era una dependencia transitoria de otro módulo.
fuente
Si está utilizando Eclipse, asegúrese de que el patrón de exclusión no elimine sus
persistence.xml
carpetas de origen en la ruta de compilación.MyProject/src/main/java -> Excluded: <your_pattern>
nodo del árbol
Excluded: (None)
seleccionando el nodo y haciendo clic en el botón Editar ... a la izquierda.fuente
Llegué algunos años tarde a la fiesta aquí, pero llegué a la misma excepción al intentar que Hibernate 3.5.1 funcionara con HSQLDB y un programa JavaFX de escritorio. Lo hice funcionar con la ayuda de este hilo y mucha prueba y error. Parece que obtienes este error para una gran variedad de problemas:
Traté de construir los ejemplos del tutorial de hibernación, pero debido a que estaba usando Java 10, no pude hacer que se construyeran y ejecutaran fácilmente. Renuncié a eso, no queriendo realmente perder el tiempo arreglando sus problemas. Configurar un archivo module-info.java (Jigsaw) es otra bola de pelo que muchas personas aún no han descubierto.
Algo confuso es que estos (a continuación) fueron los únicos dos archivos que necesitaba en mi archivo build.gradle. La documentación de Hibernate no es clara sobre exactamente qué jarras debe incluir. Entity-manager estaba causando confusión y ya no se requiere en la última versión de Hibernate, y tampoco lo es javax.persistence-api. Tenga en cuenta que estoy usando Java 10 aquí, así que tuve que incluir el jaxb-api, para evitar algunos errores de vinculación xml, así como agregar una entrada para el módulo de persistencia java en mi archivo module-info.java.
Build.gradle
Module-info.java
Con hibernate 5.3.1 no necesita especificar el proveedor, a continuación, en su archivo persistence.xml. Si no se proporciona uno, el proveedor de Hibernate se elige de forma predeterminada.
El archivo persistence.xml debe ubicarse en el directorio correcto, de modo que:
Pasar por el código fuente de hibernación en el depurador Intellij, donde busca un dialecto, también arrojó exactamente la misma excepción, debido a una propiedad de dialecto faltante en el archivo persistence.xml. Agregué esto (agregue el correcto para su tipo de base de datos):
Todavía obtuve la misma excepción después de esto, por lo que al pasar nuevamente por el depurador en Intellij revelé que la entidad de prueba que intentaba persistir (ejemplo simple padre-hijo) tenía anotaciones faltantes para las relaciones OneToMany, ManyToOne. Arreglé esto y la excepción desapareció y mis entidades persistieron bien.
Aquí está mi persistencia final completa.xml:
Probablemente desperdicié aproximadamente medio día en esta joya. Mi consejo sería comenzar de manera muy simple: una sola entidad de prueba con uno o dos campos, ya que parece que esta excepción puede tener muchas causas.
fuente
Caso de esquina: si está utilizando m2Eclipse, automáticamente incluye exclusiones en sus carpetas de recursos. Luego, cuando intente ejecutar pruebas dentro de eclipse, la ausencia posterior de persistence.xml producirá este error.
fuente
Asegúrese de haber creado el archivo persistence.xml en la carpeta 'src'. Creé bajo la carpeta del proyecto y ese fue mi problema.
fuente
Si está utilizando Maven, podría ser que no está buscando el lugar correcto para la carpeta META-INF. Otros han mencionado copiar la carpeta, pero otra forma que funcionó para mí fue decirle a Maven dónde buscarla, usando la
<resources>
etiqueta. Ver: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.htmlfuente
Ocurre cuando el administrador de la entidad intenta señalar muchas unidades de persistencia. Haz los siguientes pasos:
fuente
Me enfrenté al mismo problema, pero en EclipseLink versión 2.5.0 .
Resolví mi problema agregando otro archivo jar que era necesariamente ( javax.persistence_2.1.0.v201304241213.jar.jar );
Tarros necesarios:
- javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (dependiendo de la base de datos utilizada).
Espero que esto ayude.
fuente
También tuve este error, pero el problema era el espacio de nombres uri en el
persistence.xml
.Substituí
http://xmlns.jcp.org/xml/ns/persistence
ahttp://java.sun.com/xml/ns/persistence
y la versión 2.1 a 2.0.Ahora está funcionando
fuente
Debe agregar hibernate-entitymanager-x.jar en el classpath.
En Hibernate 4.x, si el jar está presente, no es necesario agregar org.hibernate.ejb.HibernatePersistence en el archivo persistence.xml.
fuente
La pregunta ya ha sido respondida, pero solo quería publicar un consejo que me estaba deteniendo. Esta excepción fue lanzada después de errores anteriores. Estaba recibiendo esto:
Aunque había cambiado persistence.xml para incluir el nuevo nombre de propiedad:
Siguiendo el mensaje sobre el nombre de propiedad en desuso, recibí la misma PersistenceException como la anterior y una serie de excepciones. Mi consejo: asegúrese de verificar el comienzo de la salchicha de excepción.
Parece que hay un error en Glassfish v2.1.1 en el que las implementaciones y las implementaciones no se actualizan persistence.xml, que se está almacenando en caché en alguna parte. Tuve que reiniciar el servidor y luego funcionó.
fuente
En un contexto OSGi, es necesario enumerar sus unidades de persistencia en el MANIFEST.MF del paquete, p. Ej.
De lo contrario, el paquete JPA no sabrá que su paquete contiene unidades de persistencia.
Ver http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing_with_EclipseLink_OSGi_in_PDE .
fuente
Necesita los siguientes archivos jar en el classpath:
fuente
¡Acabo de copiar el META-INF en src y trabajé!
fuente
Hibernate 5.2.5
Archivos Jar necesarios en la ruta de clase. Esto está dentro de una carpeta requerida de Hibernate 5.2.5 Versión final. Se puede descargar desde http://hibernate.org/orm/downloads/
Cree un archivo xml "persistence.xml" en
YourProject / src / META-INF / persistence.xml
persistence.xml
EntityManagerFactor = Persistance.createEntityManagerFactory ("muestra"); . "muestra" se puede cambiar según su convención de nomenclatura
Ahora crea una clase de entidad. con nombre según mi ejemplo UserDetail, en el paquete org.pramod.data.object
UserDetail.java
Ahora crea una clase con el método principal.
HibernateTest.java
La salida será
fuente
En mi caso, anteriormente utilizo idea para generar entidad por esquema de base de datos, y
persistence.xml
se genera automáticamente ensrc/main/java/META-INF
, y de acuerdo con https://stackoverflow.com/a/23890419/10701129 , lo muevo asrc/main/resources/META-INF
, también marcado META-INF como raíz fuente Esto funciona para mi.Pero simplemente marcar el META-INF original (es decir, src / main / java / META-INF) como raíz fuente, no funciona, lo que me confunde.
y esta es la estructura:
fuente
Si hay diferentes nombres en
Persistence.createEntityManagerFactory("JPAService")
diferentes clases, obtendrá el error. Al refactorizar es posible obtener diferentes nombres, como en mi caso. En una clase de la auto-generadoPersistence.createEntityManagerFactory("JPAService")
enprivate void initComponents()
la clase ContactsTable difería dePersistence.createEntityManagerFactory("JPAServiceExtended")
la clase DBManager.fuente
La mía se resolvió agregando información en persistence.xml, por ejemplo,
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
y luego asegurándome de tener la biblioteca en classpath, por ejemplo, en Maven, agregue dependencia comofuente
Verifique el nombre de la unidad permanente
fuente
En mi caso, se trataba de un error en dos propiedades como a continuación. Cuando los cambié, el proveedor 'Sin persistencia para EntityManager llamado' desapareció.
Por lo tanto, puede intentar probar la conexión con sus propiedades para verificar si todo está correcto.
Extraño error, estaba totalmente confundido por eso.
fuente
Intente también copiar el persistence.xml manualmente en la carpeta
<project root>\bin\META-INF
. Esto solucionó el problema en Eclipse Neon con elEclipseLink 2.5.2
uso de un proyecto de complemento simple.fuente
Tuve el mismo problema, pero esto realmente funcionó para mí:
NB: El comando maven anterior reinstalará todas las dependencias de su proyecto desde cero. Su consola se cargará con registros detallados debido a la solicitud de red que está haciendo Maven.
fuente