我是JPA的新手,我试着从书中做一个简单的例子.
但无论我做什么,我都会收到以下错误:
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named EmployeeService
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
at com.mycompany.simpleentity.EmployeeTest.main(EmployeeTest.java:18)
我google了很多,我做了我读到的关于JPA的所有内容.
这是我项目的目录树:
.
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- mycompany
| | `-- simpleentity
| | |-- Employee.java
| | |-- EmployeeService.java
| | `-- EmployeeTest.java
| `-- resources
| `-- Meta-INF
| `-- persistence.xml
`-- test
这是我的pom.xml:
sqlsql
这是我的源代码:
EmployeeTest.java:
package com.mycompany.simpleentity;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class EmployeeTest {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EmployeeService");
EntityManager em = emf.createEntityManager();
}
}
这是我的persistance.xml
sql.Driver"/>
sql://localhost:5432/testdb;create=true"/>
我做错了什么?
先感谢您.
最佳答案
JPA是由多个JPA提供程序(Hibernate,EclipseLink,OpenJPA,Toplink)实现的规范.
您需要选择要使用的提供程序,并将适当的依赖项添加到您的pom.xml中.您还需要在persistence.xml中指定您的提供程序.
例如,如果您使用OpenJPA(我为此示例选择了它,因为它的最新版本在Maven Central Repo中可用,因此不需要配置特定于供应商的存储库):
sqlsql
.
sql.Driver"/>
sql://localhost:5432/testdb;create=true"/>