No se ha nombrado ningún proveedor de persistencia para EntityManager

Resuelto Robert A Henru asked hace 15 años • 33 respuestas

Tengo mi persistence.xmlcon el mismo nombre usando TopLinken el META-INFdirectorio. Luego, 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 [principal] ERROR: no hay proveedor de persistencia para EntityManager llamado agisdb
javax.persistence.PersistenceException: no hay 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, recibí el error anterior.

Robert A Henru avatar Jul 21 '09 16:07 Robert A Henru
Aceptado

Coloque el "hibernate-entitymanager.jar"en el classpath de la aplicación.
Para versiones más nuevas, debe usar "hibernate-core.jar"en lugar de la obsoletahibernate-entitymanager

Si está ejecutando algún IDE, como Eclipse :Project Properties -> Java Build Path -> Libraries.

De lo contrario, colóquelo en el /libde su aplicación.

Ualter Jr. avatar Feb 25 '2011 18:02 Ualter Jr.

Después <persistence-unit name="agisdb">, defina el nombre del proveedor de persistencia:

<provider>org.hibernate.ejb.HibernatePersistence</provider>
 avatar Aug 16 '2009 21:08

Asegúrese de que el persistence.xmlarchivo esté en el directorio:<webroot>/WEB-INF/classes/META-INF

user225932 avatar Dec 06 '2009 20:12 user225932

Enfrenté el mismo problema y no pude encontrar una solución durante bastante tiempo. En mi caso ayudó a reemplazar

<provider>org.hibernate.ejb.HibernatePersistence</provider>

con

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

Tomé la solución desde aquí.

Sneg avatar Apr 13 '2017 15:04 Sneg