Java 无法解析org.apache.openjpa.persistence.PersistenceProviderImpl
我不断听到一个错误,说:Java 无法解析org.apache.openjpa.persistence.PersistenceProviderImpl,java,jpa,Java,Jpa,我不断听到一个错误,说: cannot resolve org.apache.openjpa.persistence.PersistenceProviderImpl 我的jar文件在那里,但我很难找出为什么仍然出现错误: org.apache.openjpa.persistence.PersistenceProviderImpl 我已经在谷歌搜索过了,但答案并不在那里。我反复检查以确保依赖项不存在两次,以防发生冲突。因此,当我尝试声明@Entity时,它不会拾取数据库表。我必须添加以下
cannot resolve org.apache.openjpa.persistence.PersistenceProviderImpl
我的jar文件在那里,但我很难找出为什么仍然出现错误:
org.apache.openjpa.persistence.PersistenceProviderImpl
我已经在谷歌搜索过了,但答案并不在那里。我反复检查以确保依赖项不存在两次,以防发生冲突。因此,当我尝试声明@Entity时,它不会拾取数据库表。我必须添加以下jar: org.apache.openjpa:com.springsource.org.apache.openjpa.persistence:1.02
我非常信任我的IDE,它会下载我需要的所有jar。您必须导入JPA实现jar(本例中为OpenJPA)。你可以从或那里得到一个
更新:如中所述,最好删除其他JPA提供程序库(Hibernate)。根据lib目录的图像,我想告诉您,
持久化单元的XML定义不符合预期
您的库中有Hibernate jar,所以看起来是这样的
“持久性提供者”应该是“Hibernate”,而不是“ApacheOpenJPA”
如果您真的想使用ApacheOpenJPA,那么我建议您删除lib中的HibernateJAR文件
Hibernate在两者中更受欢迎,所以我推荐它。您有专门与OpenJPA相关的jar吗?上面突出显示的Jar只是一个API;javax.persistence.jar中没有实现是的,也许有一天IDE会足够聪明,知道这个类作为persistence.xml中的提供者意味着它应该下载OpenJPA jar,但我们还没有做到。更不用说IDE无法知道下载哪个版本了。现在,如果您使用Maven或Gradle(或类似的东西),那么构建过程将足够智能,可以做到这一点。。。
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="dataBase">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<properties>
<property name="openjpa.ConnectionURL" value="com.mysql.jdbc.Driver"/>
<property name="openjpa.ConnectionDriverName" value="jdbc:mysql://localhost:8080/springpractice"/>
<property name="openjpa.ConnectionUserName" value="root"/>
<!--<property name="openjpa.ConnectionPassword" value=""/>-->
<property name="openjpa.Log" value="DefaultLevel=TRACE, Tool=INFO"/>
</properties>
</persistence-unit>
</persistence>