我正在尝试使用JPA开发Java EE Web应用程序来管理数据库。
当我尝试从数据库中检索行时,我发现错误:
"没有名为test"
的EntityManager的持久性提供程序
使用JPA的函数代码是:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");
EntityManager em =emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
@SuppressWarnings("unchecked")
List<InputHStock> iph = em.createQuery("from Student").getResultList();
for (Iterator<InputHStock> iterator = iph.iterator(); iterator.hasNext();) {
InputHStock student = (InputHStock) iterator.next();
System.out.println(student.getLocationCode());
}
tx.commit();
} catch (Exception e) {
tx.rollback();
}
}
我的persistence.xml文件:
<?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="test">
<class>application.InputHStock</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="javax.persistence.jdbc.user" value="testSQL" />
<property name="javax.persistence.jdbc.password" value="testpwd1" />
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
</properties>
</persistence-unit>
</persistence>
这是我在日食中的树状结构:
我也尝试过使用Eclipse工具来包含JPA但没有成功。
请注意,与数据库的连接正常,因为我可以在直接使用JDBC时检索数据。
答案 0 :(得分:0)
您的persistence.xml
缺少持久性提供程序。在使用EclipseLink时,添加
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
在persistence-unit
标记内。
答案 1 :(得分:0)
我认为pom.xml中缺少“ hibernate-entitymanager ”依赖项
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.6.Final</version>
</dependency>
可能您在pom中使用了hibernate-core。对于JPA,请使用hibernate-entitymanager而不是hibernate-core。
还需要在persistence.xml中提供提供者标签。
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>