เกิดข้อผิดพลาดในการสร้าง bean ด้วยชื่อ 'entityManagerFactory' ที่กำหนดในทรัพยากรพา ธ คลาส: การเรียกใช้เมธอด init ล้มเหลว


115

เมื่อฉันรวบรวมโครงการฤดูใบไม้ผลิของฉันฉันได้รับข้อผิดพลาดต่อไปนี้

เกิดข้อผิดพลาดในการสร้าง bean ด้วยชื่อ 'entityManagerFactory' ที่กำหนดไว้ในทรัพยากรพา ธ คลาส [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaAutoConfiguration.class]: การเรียกใช้เมธอด init ล้มเหลว

ฉันใช้ STS Eclipse และ MySql Database

สตริงการเชื่อมต่อของฉันApplication.Propertiesคือ

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

ข้อผิดพลาดโดยละเอียดได้รับด้านล่าง

=================================================

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>

3
เห็นได้ชัดว่า "ข้อผิดพลาด" ที่คุณได้รับคือ "เกิดจาก: com.atomikos.jdbc AtomikosSQLException: พูลการเชื่อมต่อหมด - ลองเพิ่ม" maxPoolSize "และ / หรือ" loanConnectionTimeout "บน DataSourceBean"
Neil Stockton

คำตอบ:


78

ฉันจะเริ่มต้นด้วยการเพิ่มการอ้างอิงต่อไปนี้:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.1.4.Final</version>
</dependency>

และ

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

อัปเดต :หรือเพียงแค่เพิ่มการอ้างอิงต่อไปนี้

<dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
</dependency>

33
@ georges-van ฉันพบข้อผิดพลาดเดียวกันและการอ้างอิง 2 รายการที่คุณกล่าวถึงมีอยู่แล้วในspring-boot-starter-data-jpaฉันได้รับข้อผิดพลาดต่อไปนี้ anotepad.com/notes/wpjr5g

@georgesvan ฉันมีขวดด้านบนที่คุณกล่าวถึงนำเข้าจากสปริงบูตแล้ว สิ่งที่คุณคิดอาจเป็นสาเหตุของข้อผิดพลาดเดียวกันนี้ ฉันประสบปัญหาเดียวกันแน่นอนเมื่อฉันเพิ่มการอ้างอิงที่เกี่ยวข้องกับไฮเบอร์เนต เมื่อฉันใช้ไฟล์ java จากแพ็คเกจ javax.persistence ทุกอย่างเรียบร้อยดี แต่เมื่อฉันใช้ไฟล์ java ใด ๆ จากแพ็คเกจ org.hibernate ข้อผิดพลาดเดียวกันนี้จะปรากฏขึ้น
user641887

1
เพียงใช้เวอร์ชันเดียวกันกับที่กล่าวถึงในโพสต์
Shahab A

4
@georges thevikasdube ใช้การพึ่งพา spring-boot-starter-data-jpa ที่มี Hibernate อยู่แล้ว เหตุผลใดที่เขาควรรวมการพึ่งพาไฮเบอร์เนตอย่างชัดเจน ??
Mav55

6
FYI hibernate-entitymanagerเลิกใช้งานแล้ว ใช้ (เท่านั้น) hibernate-coreแทน
โบฮีเมียน

74

ผู้ที่ใช้ java 9 รวมถึงการพึ่งพานี้: -

<dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
</dependency>

4
สำหรับผู้ที่สนใจว่าทำไมเวอร์ชันที่โพสต์ Java 8 จึงต้องการการรวมอย่างชัดเจนนี้มีบทความที่น่าสนใจที่นี่ baeldung.com/java-9-jaxbexceptionโดยพื้นฐานแล้วมันเกี่ยวข้องกับการแนะนำ Java 9s ของระบบโมดูลาร์และความพยายามที่จะลดขนาด libs ทั้งหมดที่ไม่จำเป็นลง ...
เปิด

สิ่งนี้ใช้ได้ผลสำหรับฉันแม้ว่าฉันจะใช้ Java 8 อยู่ก็ตามขอบคุณ
ahmetcetin

สิ่งนี้อาจเป็นอย่างไรสำหรับการไล่ระดับสี?
FlexEast

สิ่งนี้แก้ไขได้ y ปัญหาขอบคุณ
bileleleuch

18

การเพิ่มการอ้างอิงไม่ได้ช่วยแก้ปัญหาในตอนท้ายของฉัน

ปัญหาเกิดขึ้นในตอนท้ายของฉันเนื่องจากช่อง "เพิ่มเติม" ซึ่งเป็นส่วนหนึ่งของคลาส "@Entity" และไม่มีอยู่ในฐานข้อมูล

ฉันลบฟิลด์เพิ่มเติมออกจากคลาส @Entity และใช้งานได้

โชคดี.


1
Wat do yu หมายถึงช่องเพิ่มเติม ?? คุณช่วยให้ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ไหม ฉันมีปัญหาเดียวกันตอนนี้
Bandham Manikanta

ฉันหมายถึงคุณสมบัติเพิ่มเติมที่ไม่มีอยู่ในฐานข้อมูลเช่นจำนวนเต็มส่วนตัว / สาธารณะ .. ฯลฯ
JAD

ทำงาน.! ในคลาสเอนทิตีของฉันมีตัวสร้างสองตัว (arg, no-arg) ฉันลบสิ่งเหล่านั้นออกและมันใช้งานได้ ขอบคุณ @JAD. มีความสุขในการเข้ารหัส
Bandham Manikanta

ใช่ปัญหานี้อาจเกี่ยวข้องกับปัญหาในคลาสเอนทิตีใด ๆ
zee

ทำงาน! ข้อผิดพลาดไม่ใช่ปัญหาการพึ่งพาหรือการกำหนดค่าตัวจัดการเอนทิตี ปัญหาคือหนึ่งในคลาสเอนทิตีของฉัน หลังจากที่ฉันสร้างคลาสเอนทิตีด้วยความช่วยเหลือของผู้จัดการการคงอยู่ปัญหาได้รับการแก้ไขแล้ว ขอบคุณ
ปีเตอร์

9

ฉันก็ประสบปัญหาเดียวกัน ฉันใช้ Java9 และติดตามการพึ่งพาในไฟล์ pom:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

ปัญหาได้รับการแก้ไขหลังจากเพิ่มการพึ่งพาด้านล่างใน pom:

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>

8
นี่คือคำตอบของ Rahul Jangra ซ้ำ: stackoverflow.com/a/49707331/636009
David Conrad

7

ฉันสงสัยว่าไฟล์ jar hibernate-coreและการhibernate-entitymanagerอ้างอิงเสียหายหรือติดตั้งไม่ถูกต้องในเครื่องของคุณ

ฉันขอแนะนำให้คุณลบโฟลเดอร์ที่มีชื่อhibernate-coreและhibernate-entitymanagerจากที่เก็บในเครื่อง Maven ของคุณและ Maven จะติดตั้งใหม่

ตำแหน่งเริ่มต้นสำหรับ Maven local repository อยู่C:\Documents and Settings\[USERNAME]\.m2ใน windows หรือ~/.m2ใน Linux / Mac


มันใช้ได้ผลสำหรับฉันฉันได้อัปเดตเวอร์ชันสปริงบูตจาก 1.5 เป็น 2.3 และได้รับข้อผิดพลาดนี้
Ali786

ฉันลบที่เก็บแบบเต็มและใช้งานได้ มันแก้ไขปัญหานี้และข้อผิดพลาดอื่น ๆ อีกมากมายด้วยสปริงบูต
Eduardo Pascual Aseff

5

ในกรณีของฉันการลบคำอธิบายประกอบด้านล่างทำให้ข้อความแสดงข้อผิดพลาด 'entityManagerFactory' แสดงขึ้นเช่น

 @Id
  @GeneratedValue(strategy=GenerationType.AUTO)

หรือ

@ManyToMany(targetEntity=listOfObject_x.class)

ข้อความแสดงข้อผิดพลาดจะหายไปหลังจากเพิ่มคำอธิบายประกอบที่ขาดหายไป

package mypackage_unameit;
import javax.persistence.PrePersist;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import lombok.Data;

@Data
@Entity
public class Someclasss {

  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Long id;

  @NotNull
  @Size(min=5, message="Name must be at least 5 characters long")
  private String name;

  private Date createdAt;

  @ManyToMany(targetEntity=listOfObject_x.class)
  @Size(min=1, message="You must choose at least 1 ingredient")
  private List<listOfObject_x>   = new ArrayList<>();

  @PrePersist
  void createdAt() {
    this.createdAt = new Date();
  }
}

5

ฉัน jdk-12.0.2.jdk 'ได้พบวิธีแก้ปัญหาแล้วเพิ่มการอ้างอิงใน pom.xml:

<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.javassist/javassist -->
<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.25.0-GA</version>
</dependency>

1
ขอบคุณฉันใช้ JDK 12 ด้วยและนี่เป็นเครื่องเดียวที่เหมาะกับฉัน
AnT

ใครช่วยอธิบายได้ไหมว่าทำไมการเพิ่มการอ้างอิงเหล่านี้จึงแก้ไขข้อผิดพลาดสำหรับพวกเราบางคนได้
Keegs

4

สำหรับผู้ที่ใช้ Gradle แทน Maven ให้เพิ่มสิ่งนี้ในการอ้างอิงในไฟล์บิลด์ของคุณ:

compile('javax.xml.bind:jaxb-api:2.3.0')

3

ฉันแก้ไขของฉันด้วยการอัปเดตเวอร์ชันการพึ่งพาสปริงจาก 2.0.4 เป็น 2.1.6

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
</parent>

ถึง

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
</parent>

ฉันลองวิธีแก้ปัญหาข้างต้นทั้งหมดแล้ว แต่วิธีนี้ใช้ได้กับฉันเท่านั้น! บันทึกวันของฉัน !!!
Harriet

2

สำหรับกรณีของฉันมันเกิดจาก Intellij IDEA โดยค่าเริ่มต้นตั้ง Java 11 เป็น SDK โปรเจ็กต์เริ่มต้น แต่โปรเจ็กต์ถูกนำไปใช้ใน Java 8 ฉันได้เปลี่ยน "Project SDK" ในไฟล์ -> โครงสร้างโปรเจ็กต์ -> โปรเจ็กต์ (ในการตั้งค่าโปรเจ็กต์)


นี่เป็นปัญหาของฉันเช่นกันเมื่อคุณพยายามเปิดโครงการเก่าที่ใช้ Java8 พร้อมกับ IntellijIDEA ที่ดาวน์โหลดมาใหม่นี่คือวิธีแก้ปัญหา
fakturk

สำหรับการติดตั้ง Java8 บน macOS - brew cask ติดตั้ง adoptopenjdk / openjdk / adoptopenjdk8
fakturk

2

สำหรับผู้ที่ไม่ได้ใช้ JPA และต้องการยกเว้น entityManagerFactory แทนและใช้ Spring Data JDBC หรือ Spring JDBC สามารถยกเว้น bean เพื่อหลีกเลี่ยงข้อยกเว้น

@SpringBootApplication(exclude = {HibernateJpaAutoConfiguration.class})

1

ฉันสามารถแก้ไขปัญหาได้โดยเปลี่ยนค่าขนาดพูลสูงสุดจากหนึ่งเป็นสอง

spring.datasource.hikari.maximum สระว่ายน้ำขนาด = 2


1

พยายามใส่คำอธิบายประกอบในคลาสด้วย @EnableTransactionManagement ฉันประสบปัญหาเดียวกันและได้รับการแก้ไขโดยการเพิ่มสิ่งนี้

@EnableTransactionManagement
public class ConfigurationBean {
}

1

ฉันแก้ไขปัญหานี้โดยการเพิ่มการใช้งานที่ต่อเนื่องกันได้ใน Model

@Entity
@Table(name="Model_Rest")
@IdClass(Model_Rest.class)
public class Model_Rest implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    /**
     * 
     */
    //@GeneratedValue(strategy = GenerationType.AUTO)
    //@Column(columnDefinition="id")

    @Id
    private String login;
    @Id
    private String password;




    @Autowired
    public String getLogin() {
        return login;
    }

    @Autowired
    public void setLogin(String login) {
        this.login = login;
    }

    @Autowired
    public String getPassword() {
        return password;
    }

    @Autowired
    public void setPassword(String password) {
        this.password = password;
    }

    public Model_Rest() {
        // TODO Auto-generated constructor stub
    }

    public Model_Rest(String login, String password) {
        this.login = login;
        this.password = password;
    }

    @Override
    public String toString() {
        return "Model_Rest [login=" + login + ", password=" + password + "]";
    }
  }

1

ข้อผิดพลาดนี้อาจเกี่ยวข้องกับการที่คุณมีข้อผิดพลาดใน "spring.datasource.url" เช่นเมื่อคุณตั้งชื่อฐานข้อมูลผิด


0

ใช้ @Id ทำงานให้ฉันมิฉะนั้นฉันจะแสดงข้อผิดพลาดขึ้นอยู่กับว่ามีอะไรหายไปในคลาสเอนทิตีหรือที่เก็บของคุณ


0

หากคุณใช้ JDK 1.8.0_201 หรือล่าสุดลองใช้กับ JDK รุ่นเก่า

ฉันมีปัญหาเดียวกันกับ JDK1.8.0_201 แต่มันใช้งานได้กับ JDK1.8.0_101 โดยไม่มีการเปลี่ยนแปลงรหัสใด ๆ


0

สำหรับฉันมันเป็นผลมาจากข้อผิดพลาดอื่น

org.postgresql.util.PSQLException: FATAL: การตรวจสอบรหัสผ่านล้มเหลวสำหรับผู้ใช้

ซึ่งหมายความว่าคุณต้องตรวจสอบข้อมูลรับรองการตรวจสอบสิทธิ์ของคุณ


0

ข้อผิดพลาดของฉันได้รับการแก้ไขหลังจากเพิ่มการอ้างอิงนี้

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.16.Final</version>
    </dependency>

0

ลองเปลี่ยนรุ่นสปริง ฉันมีปัญหาเดียวกันและได้ผลสำหรับฉัน


0

ฉันมีปัญหาเดียวกันกับ Eclipse Luna ของฉัน ฉันคิดว่าฉันใช้ JDK12 และ Java 1.8 ฉันเปลี่ยน JDK เป็น JDK8 และปัญหาได้รับการแก้ไขแล้ว หากคุณต้องการตรวจสอบ JDK ของคุณใน Eclipse ให้ไปที่

Window-> Preferences-> Java- >Installed JREs 

และตรวจสอบว่าเข้ากันได้กับโครงการของคุณหรือไม่ โชคดี!


0

สำหรับฉันมันเป็นชื่อของฐานข้อมูลบน application.properties เมื่อฉันระบุชื่อที่ถูกต้องมันก็ใช้ได้



0

ใครยังคงมีปัญหาเดียวกัน โปรดเพิ่มบรรทัดต่อไปนี้ใน application.properties

# The SQL dialect makes Hibernate generate better SQL for the chosen database
## I am using Mysql8 so I have declared MySQL8Dialect if you have other versions just add ## that version number
spring.jpa.properties.hibernate.dialect =  org.hibernate.dialect.MySQL8Dialect

-1

ฉันได้ผ่านข้อผิดพลาดที่คล้ายกัน ข้อผิดพลาดไม่ได้มาก่อนหน้านี้ แต่เมื่อเร็ว ๆ นี้ฉันติดตั้ง oracle db ของฉันใหม่และเปลี่ยนชื่ออินสแตนซ์จาก 'xe' เป็น 'orcl' แต่ลืมเปลี่ยนโค้ดชิ้นนี้ในไฟล์คุณสมบัติ:

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:***xe***
spring.datasource.username=system
spring.datasource.password=manager

เมื่อฉันเปลี่ยนจาก 'xe' เป็น 'orcl' ทุกอย่างเรียบร้อยดี


-1

ปัญหาอาจเกิดจากความขัดแย้งของแพ็คเกจ เมื่อคุณใช้@Idคำอธิบายประกอบในเอนทิตีอาจใช้@IdSpring framework อย่างไรก็ตามต้องใช้@Idคำอธิบายประกอบของ API การคงอยู่

ดังนั้นใช้@javax.persistence.Idคำอธิบายประกอบในเอนทิตี


หากคุณเข้าถึงคลาสจะอ้างถึงคลาสเฉพาะที่มีการอ้างอิงแพ็กเกจผ่านการนำเข้า หากคุณทำเช่นนั้นจะเป็นข้อผิดพลาดเวลาคอมไพล์และถูกจับได้ในระหว่างกระบวนการใด ๆ ในตอนแรก ดังนั้นไม่มีโอกาสที่จะขัดแย้งกับ @Id กับ JPA และ Spring
Imam Bux

ฉันไม่แน่ใจว่าคำถามนี้พยายามตอบคำถามอะไร แต่ไม่ใช่คำถามนี้ การใส่คำอธิบายประกอบ (หรือไม่) ด้วย @Id จะไม่ส่งผลให้เกิดข้อผิดพลาด stacktrace ที่ระบุว่า"พูลการเชื่อมต่อหมด - ลองเพิ่ม" maxPoolSize "และ / หรือ" loanConnectionTimeout "บน DataSourceBean"
Mark Rotteveel

-2

ลองเพิ่มการอ้างอิงต่อไปนี้

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
</dependency> 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.