没有名为X的EntityManager的持久性提供程序错误



我正在尝试使用mvc和hibernate运行一个空的Spring应用程序。我被困在休眠部分,由于某种原因,我一直收到以下错误。从日志中看,hibernate试图连接到数据库,但失败了,我不知道会出什么问题。我使用的数据库是MySQL8的本地实例。设置(如字符编码、时区等(是正确的,我使用JDBC连接到它没有任何问题。

Error creating bean with name 'entityManagerFactory' defined in pl.coderslab.app.AppConfig: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: No Persistence provider for EntityManager named tesPersistenceUnit

persistence.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="tesPersistenceUnit">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/tes"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="very very secret"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.schema-generation.database.action"
value="create"/>
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQL8Dialect"/>
<property name="hibernate.connection.characterEncoding" value="utf8"/>
</properties>
</persistence-unit>
</persistence>

AppConfig.java:

package pl.coderslab.app;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalEntityManagerFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import javax.persistence.EntityManagerFactory;
@Configuration
@ComponentScan(basePackages = "pl.coderslab")
@EnableTransactionManagement
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver =
new InternalResourceViewResolver();
viewResolver.setPrefix("/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public LocalEntityManagerFactoryBean entityManagerFactory() {
LocalEntityManagerFactoryBean emfb = new LocalEntityManagerFactoryBean();
emfb.setPersistenceUnitName("tesPersistenceUnit");
return emfb;
}
@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager tm = new JpaTransactionManager(emf);
return tm;
}
}

SpringDi应用程序:

package pl.coderslab.app;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class SpringDiApplication {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
context.close();
}
}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pl.coderslab</groupId>
<artifactId>Spring01hibernate</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<org.springframework.version>4.3.7.RELEASE</org.springframework.version>
<failOnMissingWebXml>false</failOnMissingWebXml>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>

</dependencies>

</project>

完整运行日志:

"C:Program FilesJavajdk1.8.0_221binjava.exe" "-javaagent:C:Program FilesJetBrainsIntelliJ IDEA 2019.2.4libidea_rt.jar=58157:C:Program FilesJetBrainsIntelliJ IDEA 2019.2.4bin" -Dfile.encoding=UTF-8 -classpath "C:Program FilesJavajdk1.8.0_221jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_221jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_221jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_221jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_221jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_221jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_221jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_221jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_221jrelibextnashorn.jar;C:Program FilesJavajdk1.8.0_221jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_221jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_221jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_221jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_221jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_221jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_221jrelibjce.jar;C:Program FilesJavajdk1.8.0_221jrelibjfr.jar;C:Program FilesJavajdk1.8.0_221jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_221jrelibjsse.jar;C:Program FilesJavajdk1.8.0_221jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_221jrelibplugin.jar;C:Program FilesJavajdk1.8.0_221jrelibresources.jar;C:Program FilesJavajdk1.8.0_221jrelibrt.jar;C:UsersOlgaIdeaProjectsSpring01hibernatetargetclasses;C:UsersOlga.m2repositoryorgspringframeworkspring-webmvc4.3.7.RELEASEspring-webmvc-4.3.7.RELEASE.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-aop4.3.7.RELEASEspring-aop-4.3.7.RELEASE.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-beans4.3.7.RELEASEspring-beans-4.3.7.RELEASE.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-context4.3.7.RELEASEspring-context-4.3.7.RELEASE.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-core4.3.7.RELEASEspring-core-4.3.7.RELEASE.jar;C:UsersOlga.m2repositorycommons-loggingcommons-logging1.2commons-logging-1.2.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-expression4.3.7.RELEASEspring-expression-4.3.7.RELEASE.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-web4.3.7.RELEASEspring-web-4.3.7.RELEASE.jar;C:UsersOlga.m2repositoryjavaxservletjavax.servlet-api3.1.0javax.servlet-api-3.1.0.jar;C:UsersOlga.m2repositoryjavaxservletjstl1.2jstl-1.2.jar;C:UsersOlga.m2repositoryorghibernatehibernate-core5.3.1.Finalhibernate-core-5.3.1.Final.jar;C:UsersOlga.m2repositoryorgjbossloggingjboss-logging3.3.2.Finaljboss-logging-3.3.2.Final.jar;C:UsersOlga.m2repositoryjavaxpersistencejavax.persistence-api2.2javax.persistence-api-2.2.jar;C:UsersOlga.m2repositoryorgjavassistjavassist3.22.0-GAjavassist-3.22.0-GA.jar;C:UsersOlga.m2repositorynetbytebuddybyte-buddy1.8.12byte-buddy-1.8.12.jar;C:UsersOlga.m2repositoryantlrantlr2.7.7antlr-2.7.7.jar;C:UsersOlga.m2repositoryorgjbossspecjavaxtransactionjboss-transaction-api_1.2_spec1.1.1.Finaljboss-transaction-api_1.2_spec-1.1.1.Final.jar;C:UsersOlga.m2repositoryorgjbossjandex2.0.3.Finaljandex-2.0.3.Final.jar;C:UsersOlga.m2repositorycomfasterxmlclassmate1.3.4classmate-1.3.4.jar;C:UsersOlga.m2repositorydom4jdom4j1.6.1dom4j-1.6.1.jar;C:UsersOlga.m2repositoryorghibernatecommonhibernate-commons-annotations5.0.3.Finalhibernate-commons-annotations-5.0.3.Final.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-orm4.3.7.RELEASEspring-orm-4.3.7.RELEASE.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-jdbc4.3.7.RELEASEspring-jdbc-4.3.7.RELEASE.jar;C:UsersOlga.m2repositoryorgspringframeworkspring-tx4.3.7.RELEASEspring-tx-4.3.7.RELEASE.jar;C:UsersOlga.m2repositorymysqlmysql-connector-java5.1.39mysql-connector-java-5.1.39.jar" pl.coderslab.app.SpringDiApplication
mar 04, 2020 11:43:30 PM org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@b81eda8: startup date [Wed Mar 04 23:43:30 CET 2020]; root of context hierarchy
mar 04, 2020 11:43:30 PM org.springframework.orm.jpa.LocalEntityManagerFactoryBean createNativeEntityManagerFactory
INFO: Building JPA EntityManagerFactory for persistence unit 'tesPersistenceUnit'
mar 04, 2020 11:43:30 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
name: tesPersistenceUnit
...]
mar 04, 2020 11:43:31 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.3.1.Final}
mar 04, 2020 11:43:31 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
mar 04, 2020 11:43:31 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.3.Final}
mar 04, 2020 11:43:31 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
mar 04, 2020 11:43:31 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/tes]
mar 04, 2020 11:43:31 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****, characterEncoding=utf8}
mar 04, 2020 11:43:31 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
mar 04, 2020 11:43:31 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Wed Mar 04 23:43:31 CET 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
mar 04, 2020 11:43:32 PM org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator initiateService
WARN: HHH000342: Could not obtain connection to query metadata : null
mar 04, 2020 11:43:32 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
mar 04, 2020 11:43:32 PM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl makeLobCreatorBuilder
INFO: HHH000422: Disabling contextual LOB creation as connection was null
mar 04, 2020 11:43:32 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 08001
mar 04, 2020 11:43:32 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Could not create connection to database server.
mar 04, 2020 11:43:32 PM org.springframework.context.annotation.AnnotationConfigApplicationContext refresh
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in pl.coderslab.app.AppConfig: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: No Persistence provider for EntityManager named tesPersistenceUnit
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in pl.coderslab.app.AppConfig: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: No Persistence provider for EntityManager named tesPersistenceUnit
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:742)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
at pl.coderslab.app.SpringDiApplication.main(SpringDiApplication.java:7)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named tesPersistenceUnit
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
at org.springframework.orm.jpa.LocalEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
... 11 more
Process finished with exit code 1

尝试将this:添加到pom.xml

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.1.Final</version>
</dependency>

相关内容

最新更新