我知道在SO上已经有很多问题,但他们没有为我的问题提供解决方案:
我正在使用一个带有JPA的项目,从具有完全相同设置的其他人克隆(相同的操作系统,相同的IDE,相同的数据库名称,也在MAMP中)
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named persistentie
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at DatabaseTest.main(DatabaseTest.java:29)
我的persistence.xml(在文件夹/ META-INF /和/ WEB-INF / classes / META-INF /中,正如关于SO的其他多个问题所建议的那样):
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="persistentie" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>Domein.Student</class>
<class>Domein.Onderzoeksdomein</class>
<class>Domein.Promotor</class>
<class>Domein.Gebruiker</class>
<class>Domein.Campus</class>
<class>Domein.Presentatie</class>
<class>Domein.Dag</class>
<class>Domein.Lokaal</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/Project2-DB?zeroDateTimeBehavior=convertToNull"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>
</persistence-unit>
</persistence>
此行是获取例外的地方:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistentie");
在此之前没有代码,它是主要的第一行。
我正在使用MAMP,带有Persistence (JPA 2.1)
和OS X的NetBeans 7.4。
我在这里完全迷失了...因为我没有改变我朋友的代码,这应该可行吗?
我还检查了javax.persistence.Persistence.createEntityManagerFactory(String name)的来源,我发现resolver.getPersistenceProviders()返回一个空List。我没有JPA的经验知道这意味着什么。
答案 0 :(得分:4)
你的类路径中没有EM
jar。只需添加:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
答案 1 :(得分:0)
对于EclipseLink,添加此依赖项:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.1.1</version>
<scope>provided</scope>
</dependency>