我澄清这是一个学校项目。
我必须使用JPA(NikpseLink)在Java中进行CRUD。
为此,在2019-12年,我用NikpseLink3.0.3和OpenJDK11创建了一个“JPA项目”。此外,我还添加了javax-Persistence 2.2.1和MySQL Connector 5.0.0作为库。
在此之后,我配置了到MySQL数据库的连接,并使用该选项基于MySQL表生成Java类。
在尝试创建EntityManagerFactory时会带来不便,因为它不会使提供程序有效。
错误在于:
aug. 30, 2022 10:29:39 AM
WARNING: javax.persistence.spi::No valid providers found.
Exception in thread "main" javax.persistence.PersistenceException: No persistence provider for EntityManager named testJPA
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:86)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
in testJPA.main.main(main.java:12)
我的主要观点是:
package testJPA;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class main{
public static void main(String[] args) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("testJPA");
}
}
我的Persistence.xml是:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" 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_2.xsd">
<persistence unit name="testJPA" transaction type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://SERVER:3306/gabrieln_laboratory"/>
<property name="javax.persistence.jdbc.user" value="USER"/>
<property name="javax.persistence.jdbc.password" value="PASSWORD"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
</persistence>
我验证了通常情况下,Eclipse将项目添加到src/main/Java中(带有META-INF文件夹和它的Persistence.xml)。
我一直在尝试替代方案,并阅读了各种论坛,但在这一点上我被困住了,我不知道这是否可能是库的问题,或者是否是特定于Eclipse的配置。
先谢谢你。
1条答案
按热度按时间zfycwa2u1#
在持久化单元的下面添加此标记
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>