Beim Kompilieren meines Frühlingsprojekts wurde der folgende Fehler angezeigt.
Fehler beim Erstellen der Bean mit dem Namen 'entityManagerFactory', der in der Klassenpfadressource [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaAutoConfiguration.class] definiert ist: Der Aufruf der init-Methode ist fehlgeschlagen
Ich verwende STS Eclipse und MySql Database
Meine Verbindungszeichenfolge Application.Properties
ist
spring.datasource.url=jdbc:mysql://localhost:3306/stgdb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
Der detaillierte Fehler ist unten angegeben
=================================================
2016-10-15 15:34:38.875[0;39m [31mERROR[0;39m [35m3700[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.boot.SpringApplication [0;39m [2m:[0;39m Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:851) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
at com.s2g.testrestapplication.TestRestApplication.main(TestRestApplication.java:10) [classes/:na]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954) ~[hibernate-entitymanager-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:882) ~[hibernate-entitymanager-5.0.11.Final.jar:5.0.11.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:373) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:362) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
... 16 common frames omitted
Caused by: org.hibernate.exception.GenericJDBCException: Unable to obtain JDBC Connection
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.schema.extract.internal.ExtractionContextImpl.getJdbcConnection(ExtractionContextImpl.java:65) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.schema.extract.internal.ExtractionContextImpl.getJdbcDatabaseMetaData(ExtractionContextImpl.java:75) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.locateTableInNamespace(InformationExtractorJdbcDatabaseMetaDataImpl.java:339) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTable(InformationExtractorJdbcDatabaseMetaDataImpl.java:241) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTableInformation(DatabaseInformationImpl.java:105) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:162) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:134) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:472) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) ~[hibernate-entitymanager-5.0.11.Final.jar:5.0.11.Final]
... 22 common frames omitted
Caused by: com.atomikos.jdbc.AtomikosSQLException: Connection pool exhausted - try increasing 'maxPoolSize' and/or 'borrowConnectionTimeout' on the DataSourceBean.
at com.atomikos.jdbc.AtomikosSQLException.throwAtomikosSQLException(AtomikosSQLException.java:46) ~[transactions-jdbc-3.9.3.jar:na]
at com.atomikos.jdbc.AbstractDataSourceBean.throwAtomikosSQLException(AbstractDataSourceBean.java:90) ~[transactions-jdbc-3.9.3.jar:na]
at com.atomikos.jdbc.AbstractDataSourceBean.throwAtomikosSQLException(AbstractDataSourceBean.java:85) ~[transactions-jdbc-3.9.3.jar:na]
at com.atomikos.jdbc.AbstractDataSourceBean.getConnection(AbstractDataSourceBean.java:347) ~[transactions-jdbc-3.9.3.jar:na]
at com.atomikos.jdbc.AbstractDataSourceBean.getConnection(AbstractDataSourceBean.java:394) ~[transactions-jdbc-3.9.3.jar:na]
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.tool.schema.extract.internal.ExtractionContextImpl.getJdbcConnection(ExtractionContextImpl.java:62) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
... 33 common frames omitted
==============================
Pom.xml file
<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>com.s2g.testrestapplication</groupId>
<artifactId>testrestapplication</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>TestRestApplication</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml-saml-api</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Antworten:
Ich würde damit beginnen, die folgende Abhängigkeit hinzuzufügen:
und
UPDATE : Oder fügen Sie einfach die folgende Abhängigkeit hinzu.
quelle
spring-boot-starter-data-jpa
Ich erhalte den folgenden Fehler. anotepad.com/notes/wpjr5ghibernate-entitymanager
ist jetzt veraltet. Verwenden Siehibernate-core
stattdessen (nur) .Personen, die Java 9 verwenden, haben folgende Abhängigkeit: -
quelle
Das Hinzufügen von Abhängigkeiten hat das Problem an meinem Ende nicht behoben.
Das Problem trat an meinem Ende aufgrund von "zusätzlichen" Feldern auf, die Teil der Klasse "@Entity" sind und nicht in der Datenbank vorhanden sind.
Ich habe die zusätzlichen Felder aus der @ Entity-Klasse entfernt und es hat funktioniert.
Viel Glück.
quelle
Ich stand auch vor dem gleichen Problem. Ich habe Java9 verwendet und folgende Abhängigkeit in der POM-Datei:
Das Problem wurde behoben, nachdem die folgende Abhängigkeit in pom hinzugefügt wurde:
quelle
Ich vermute, dass die JAR-Dateien
hibernate-core
undhibernate-entitymanager
Abhängigkeiten beschädigt sind oder nicht ordnungsgemäß auf Ihrem Computer installiert wurden.Ich schlage vor, dass Sie nur die genannten Ordner
hibernate-core
undhibernate-entitymanager
aus Ihrem lokalen Maven-Repository löschen und Maven sie neu installiert.Der Standardspeicherort für das lokale Maven-Repository befindet sich
C:\Documents and Settings\[USERNAME]\.m2
in Windows oder~/.m2
unter Linux / Mac.quelle
In meinem Fall wird beim Löschen einer der folgenden Anmerkungen beispielsweise die Fehlermeldung 'entityManagerFactory' angezeigt.
oder
Die Fehlermeldung verschwindet nach dem Hinzufügen der fehlenden Anmerkung (en).
quelle
Ich habe jdk-12.0.2.jdk, habe eine Lösung für das Problem gefunden, füge Abhängigkeiten zu pom.xml hinzu:
quelle
Fügen Sie für diejenigen, die Gradle anstelle von Maven verwenden, dies zu den Abhängigkeiten in Ihrer Build-Datei hinzu:
quelle
Ich habe meine Probleme gelöst, indem ich die Versionen der Frühlingsabhängigkeiten von 2.0.4 auf 2.1.6 aktualisiert habe
zu
quelle
In meinem Fall lag es an Intellij IDEA, Java 11 standardmäßig als Standard-Projekt-SDK festzulegen, aber das Projekt wurde in Java 8 implementiert. Ich habe "Projekt-SDK" in Datei -> Projektstruktur -> Projekt (in den Projekteinstellungen) geändert.
quelle
Für diejenigen, die JPA nicht verwenden und stattdessen die entityManagerFactory ausschließen und Spring Data JDBC verwenden möchten, kann Spring JDBC die Bean ausschließen, um die Ausnahme zu vermeiden
quelle
Ich konnte das Problem beheben, indem ich den Wert für die maximale Poolgröße von eins auf zwei änderte
spring.datasource.hikari.maximum-pool-size = 2
quelle
Versuchen Sie, die Klasse mit @EnableTransactionManagement zu kommentieren. Ich hatte das gleiche Problem und es wurde durch Hinzufügen dieses Problems behoben.
quelle
Ich habe dieses Problem durch Hinzufügen von im Modell serialisierbaren Implementierungen behoben.
quelle
Dieser Fehler kann auch damit zusammenhängen, dass Sie einen Fehler in Ihrer "spring.datasource.url" haben, wenn Sie beispielsweise einen falschen Datenbanknamen angegeben haben
quelle
Verwenden Sie @Id. Für mich gearbeitet. Andernfalls wird ein Fehler ausgegeben. Dies hängt davon ab, ob in Ihrer Entitätsklasse oder Ihrem Repository etwas fehlt
quelle
Wenn Sie JDK 1.8.0_201 oder die neueste Version verwenden, versuchen Sie es mit einem älteren JDK.
Ich habe das gleiche Problem mit JDK1.8.0_201, aber es funktioniert mit JDK1.8.0_101 ohne Codeänderung.
quelle
Für mich war es das Ergebnis eines weiteren Fehlers
Das heißt, Sie müssen nur Ihre Authentifizierungsdaten überprüfen
quelle
Mein Fehler wurde nach dem Hinzufügen dieser Abhängigkeit behoben.
quelle
Versuchen Sie, die Federversion zu ändern. Ich hatte das gleiche Problem und das hat bei mir funktioniert
quelle
Ich hatte das gleiche Problem mit meiner Eclipse Luna. Ich finde heraus, dass ich JDK12 und Java 1.8 verwende. Ich habe JDK in JDK8 geändert und das Problem wurde gelöst. Wenn Sie Ihr JDK in Eclipse überprüfen möchten, gehen Sie zu
und prüfen Sie, ob sie mit Ihrem Projekt kompatibel sind. Viel Glück!
quelle
Für mich war es der Name der Datenbank auf application.properties. Als ich den richtigen Namen angegeben habe, hat es funktioniert.
quelle
Ich habe meine durch Definieren einer Annotation für umgekehrte Beziehungen für ein zusätzliches Feld gelöst
quelle
Wer hat noch das gleiche Problem. Bitte fügen Sie die folgende Zeile in application.properties hinzu
quelle
Ich habe einen ähnlichen Fehler durchlaufen. Der Fehler trat nicht früher auf, aber kürzlich habe ich meine Oracle-Datenbank neu installiert und den Instanznamen von 'xe' in 'orcl' geändert. Vergessen Sie jedoch, diesen Code in der Eigenschaftendatei zu ändern:
Sobald ich es von 'xe' in 'orcl' ändere, ist alles in Ordnung.
quelle
Das Problem könnte an Paketkonflikten liegen. Wenn Sie
@Id
in einer Entität Anmerkungen verwenden, wird möglicherweise das@Id
of Spring-Framework verwendet. Es muss jedoch eine@Id
Annotation der Persistenz-API verwendet werden.Verwenden Sie also
@javax.persistence.Id
Anmerkungen in Entitäten.quelle
Versuchen Sie, die folgenden Abhängigkeiten hinzuzufügen.
quelle