No se ha nombrado ningún proveedor de persistencia para EntityManager
Tengo mi persistence.xml
con el mismo nombre usando TopLink
en el META-INF
directorio. 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.
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 /lib
de su aplicación.
Después <persistence-unit name="agisdb">
, defina el nombre del proveedor de persistencia:
<provider>org.hibernate.ejb.HibernatePersistence</provider>
Asegúrese de que el persistence.xml
archivo esté en el directorio:<webroot>/WEB-INF/classes/META-INF
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í.