有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java没有运行我的应用程序的EntityManager的持久性提供程序

我在运行应用程序时出现以下错误:

Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named LOCAL_PERSISTENCE
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at org.springframework.orm.jpa.LocalEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:92)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
... 86 more

我的坚持。xml是:

<persistence 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"
         version="2.1">

<persistence-unit name="LOCAL_PERSISTENCE">
    <description>Version Control</description>
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

    <properties>
        <property name="javax.persistence.jdbc.driver" value="com.oracle.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@XXXXXXXXXXX" />
        <property name="javax.persistence.jdbc.user" value="system" />
        <property name="javax.persistence.jdbc.password" value="password" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
    </properties>

</persistence-unit>

我的Spring配置类:

package com.mwc.versionControl.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalEntityManagerFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@ComponentScans(value = { @ComponentScan("com.mwc.versionControl.DAO"),
        @ComponentScan("com.mwc.versionControl.service") })
public class AppConfig {

@Bean
public LocalEntityManagerFactoryBean geEntityManagerFactoryBean() {
    LocalEntityManagerFactoryBean factoryBean = new LocalEntityManagerFactoryBean();
    factoryBean.setPersistenceUnitName("LOCAL_PERSISTENCE");
    return factoryBean;
}

@Bean
public JpaTransactionManager geJpaTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(geEntityManagerFactoryBean().getObject());
    return transactionManager;
}

}

我像这样运行AppConfig类:

new AnnotationConfigApplicationContext(AppConfig.class);

运行我的应用程序的主应用程序类

我不明白这一点,因为我有我的坚持。正确位置(META-INF)上的xml。我还放了hibernate内核。库文件夹上的jar,如this答案之一所示。。。我也非常确定我的pom.xml的所有依赖项都是正确的

我遵循this教程

有什么建议吗?提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    正如西蒙在comments中所建议的,将persistence.xmlsrc/main/java/META-INF移动到src/main/resources/META-INF解决了这个问题