Ketika saya menyusun proyek musim semi saya, saya mendapat kesalahan berikut.
Kesalahan membuat kacang dengan nama 'entityManagerFactory' yang ditentukan di sumber jalur kelas [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaAutoConfiguration.class]: Pemanggilan metode init gagal
Saya menggunakan STS Eclipse dan MySql Database
String Koneksi saya di Application.Properties
adalah
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
Kesalahan rinci diberikan di bawah ini
=================================================
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>
Jawaban:
Saya akan mulai dengan menambahkan ketergantungan berikut:
dan
UPDATE : Atau Cukup Tambahkan dependensi berikut.
sumber
spring-boot-starter-data-jpa
saya mendapatkan kesalahan berikut. anotepad.com/notes/wpjr5ghibernate-entitymanager
sekarang tidak digunakan lagi. Gunakan (hanya)hibernate-core
sebagai gantinya.Orang yang menggunakan java 9 menyertakan ketergantungan ini: -
sumber
Menambahkan dependensi tidak memperbaiki masalah di pihak saya.
Masalah ini terjadi di pihak saya karena kolom "tambahan" yang merupakan bagian dari kelas "@Entity" dan tidak ada di database.
Saya menghapus bidang tambahan dari kelas @Entity dan berhasil.
Semoga berhasil.
sumber
Saya juga menghadapi masalah yang sama. Saya menggunakan Java9 dan mengikuti ketergantungan di file pom:
Masalah ini teratasi setelah menambahkan ketergantungan di bawah ini di pom:
sumber
Saya menduga bahwa file jar
hibernate-core
danhibernate-entitymanager
dependensi rusak atau tidak diinstal dengan benar di komputer Anda.Saya menyarankan agar Anda menghapus folder bernama
hibernate-core
danhibernate-entitymanager
dari repositori lokal Maven Anda dan Maven akan menginstalnya kembali.Lokasi default untuk repositori lokal Maven ada
C:\Documents and Settings\[USERNAME]\.m2
di windows atau~/.m2
di Linux / Mac.sumber
Dalam kasus saya, menghapus salah satu anotasi di bawah ini menyebabkan pesan kesalahan 'entityManagerFactory' muncul, misalnya.
atau
Pesan kesalahan menghilang setelah menambahkan anotasi yang hilang.
sumber
Saya telah jdk-12.0.2.jdk, telah menemukan solusi untuk masalah ini, tambahkan dependensi ke pom.xml:
sumber
Bagi mereka yang menggunakan Gradle, bukan Maven, tambahkan ini ke dependensi di file build Anda:
sumber
Saya menyelesaikan milik saya dengan memperbarui versi dependensi pegas dari 2.0.4 ke 2.1.6
untuk
sumber
Untuk kasus saya, itu karena Intellij IDEA secara default menetapkan Java 11 sebagai SDK proyek default, tetapi proyek diimplementasikan di Java 8. Saya telah mengubah "Project SDK" di File -> Struktur Proyek -> Proyek (dalam Pengaturan Proyek)
sumber
Bagi mereka yang tidak menggunakan JPA dan lebih memilih untuk mengecualikan entityManagerFactory dan menggunakan Spring Data JDBC atau Spring JDBC dapat mengecualikan kacang untuk menghindari pengecualian
sumber
Saya dapat memperbaiki masalah dengan mengubah nilai ukuran kolam maksimum dari satu menjadi dua
spring.datasource.hikari.maximum-pool-size = 2
sumber
Coba beri anotasi kelas dengan @EnableTransactionManagement. Saya menghadapi masalah yang sama dan itu diselesaikan dengan menambahkan ini.
sumber
Saya menyelesaikan masalah ini dengan menambahkan implements Serializable di Model.
sumber
Kesalahan ini mungkin juga terkait dengan fakta bahwa Anda memiliki kesalahan dalam "spring.datasource.url" saat Anda memberikan nama db yang salah misalnya
sumber
Gunakan @Id. Berfungsi untuk saya. Jika tidak, saya akan membuang kesalahan. Tergantung apakah ada yang hilang di kelas entitas atau repositori Anda
sumber
Jika Anda menggunakan JDK 1.8.0_201 atau yang terbaru coba dengan JDK yang lebih lama.
Saya memiliki masalah yang sama dengan JDK1.8.0_201, namun bekerja dengan JDK1.8.0_101 tanpa perubahan kode apa pun.
sumber
Bagi saya, itu adalah akibat dari kesalahan lain
Yang berarti Anda hanya perlu meninjau kredensial otentikasi Anda
sumber
Kesalahan saya diselesaikan setelah menambahkan ketergantungan ini.
sumber
Coba ubah versi pegas. Saya memiliki masalah yang sama dan itu berhasil untuk saya
sumber
Saya memiliki masalah yang sama pada Eclipse Luna saya. Saya menemukan bahwa saya menggunakan JDK12 dan Java 1.8. Saya mengubah JDK menjadi JDK8 dan masalah telah teratasi. Jika Anda ingin memeriksa JDK Anda di Eclipse, buka
dan periksa apakah mereka kompatibel dengan proyek Anda. Semoga berhasil!
sumber
Bagi saya itu adalah nama database di application.properties. Ketika saya memberikan nama yang benar, itu berfungsi dengan baik.
sumber
Saya menyelesaikan milik saya dengan mendefinisikan anotasi hubungan terbalik untuk bidang tambahan
sumber
Siapapun yang masih mengalami masalah yang sama. Harap tambahkan baris berikut di application.properties
sumber
Saya telah mengalami kesalahan serupa. Kesalahan tidak datang lebih awal, tetapi baru-baru ini saya menginstal ulang oracle db saya dan mengubah nama instance dari 'xe' menjadi 'orcl', tetapi lupa untuk mengubah bagian kode ini di file properti:
Setelah saya mengubahnya dari 'xe' menjadi 'orcl' semuanya baik-baik saja.
sumber
Masalahnya mungkin karena konflik paket. Saat Anda menggunakan
@Id
anotasi dalam suatu entitas, itu mungkin menggunakan@Id
kerangka Spring; Namun, itu harus menggunakan@Id
anotasi API persistensi.Jadi gunakan
@javax.persistence.Id
anotasi dalam entitas.sumber
Coba tambahkan dependensi berikut.
sumber