我尝试在Intellij中使用Maven创建一个JPA项目。 我使用Eclipse Link,数据库是SQlite。
这是我当前的pom.xml
文件(仅限依赖项):
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.8.11.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.3</version>
</dependency>
我的persistence.xml
文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
<persistence-unit name="NewPersistenceUnit">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.raeste.db.BuchungEntity</class>
<class>com.raeste.db.KategorieEntity</class>
<properties>
<property name="eclipselink.jdbc.url" value="jdbc:sqlite:/home/raeste/programmierung/haushaltsbuch.db"/>
<property name="eclipselink.jdbc.driver" value="org.sqlite.JDBC"/>
</properties>
</persistence-unit>
</persistence>
如果我现在尝试创建EntityMangerFactory
,我会收到以下异常:
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named NewPersistenceUnit
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
创建EntityManagerFactory
的代码是:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("NewPersistenceUnit");
我知道这个问题有几个问题但是没有问题。
persistence.xml
文件位于以下路径中:
src/main/java/META-INF/
答案 0 :(得分:4)
persistence.xml
文件应位于src/main/resources/META-INF
。
src/main/java
用于Java源代码
src/main/resources
用于资源文件。
试试吧。