在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误:调用 init 方法失败

Posted

技术标签:

【中文标题】在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误:调用 init 方法失败【英文标题】:Error creating bean with name 'entityManagerFactory' defined in class path resource : Invocation of init method failed 【发布时间】:2017-02-24 18:16:53 【问题描述】:

当我编译我的 spring 项目时,我得到了以下错误。

在类中定义名称为“entityManagerFactory”的 bean 创建错误 路径资源 [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: init方法调用失败

我正在使用 STS Eclipse 和 mysql 数据库

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>

【问题讨论】:

很明显,你得到的“错误”实际上是“由:com.atomikos.jdbc.AtomikosSQLException:连接池耗尽 - 尝试增加 DataSourceBean 上的 'maxPoolSize' 和/或 'borrowConnectionTimeout'。” 【参考方案1】:

我将从添加以下依赖项开始:

<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>

【讨论】:

@georges-van 我遇到了同样的错误,并且您提到的 2 个依赖项已经存在于 spring-boot-starter-data-jpa 中,我收到以下错误。 anotepad.com/notes/wpjr5g 只要使用帖子中提到的相同版本即可。 @georges,thevikasdube 已经在使用包含 Hibernate 的 spring-boot-starter-data-jpa 依赖项。有什么理由他应该明确包括休眠依赖项?? 仅供参考 hibernate-entitymanager 现已弃用。请使用(仅)hibernate-core 谢谢,我添加了这个并且它起作用了- javax.xml.bindjaxb-api[2.3.0, ]【参考方案2】:

使用 Java 9 的人包含此依赖项:

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

【讨论】:

对于那些对 Java 8 之后的版本为什么需要明确包含感兴趣的人,这里有一篇有趣的文章; baeldung.com/java-9-jaxbexception ,基本上它与 Java 9s 引入模块化系统有关,并试图精简所有不必要的库...... 这对我有用,即使我使用的是 Java 8,谢谢。 这对于 gradle 可能是什么?【参考方案3】:

添加依赖项并没有解决我的问题。

问题发生在我的最后,因为“@Entity”类中的“附加”字段不存在于数据库中。

我从@Entity 类中删除了附加字段,它起作用了。

祝你好运。

【讨论】:

你所说的附加字段是什么意思?你能提供更多关于这方面的信息吗?我现在也有同样的问题 我的意思是数据库中不存在的其他属性,例如私有/公共整数..等 工作!在我的 Entity 类中,有两个构造函数(arg,no-arg)。我删除了它们并且它起作用了。谢谢@JAD。快乐编码。 是的,此问题可能与任何实体类中的问题有关。 成功了!该错误不是依赖项或实体管理器配置问题。问题是我的实体类之一。在持久性管理器的帮助下创建了实体类后,问题就解决了。谢谢。【参考方案4】:

我怀疑 hibernate-corehibernate-entitymanager 依赖项的 jar 文件已损坏或未正确安装在您的计算机上。

我建议您只需从您的 Maven 本地存储库中删除名为 hibernate-corehibernate-entitymanager 的文件夹,然后 Maven 将重新安装它们。

Maven 本地存储库的默认位置是 Windows 中的 C:\Documents and Settings\[USERNAME]\.m2 或 Linux/Mac 中的 ~/.m2

【讨论】:

它对我有用,我已将 Spring Boot 版本从 1.5 更新到 2.3,并收到此错误。 我删除了我的完整存储库,它可以工作。它解决了这个问题以及 spring boot 的许多其他错误【参考方案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>

【讨论】:

谢谢,我也使用 JDK 12,这是唯一适合我的。 谁能解释为什么添加这些依赖项可以解决我们中的一些人的错误? 这个修复了我的。谢谢。【参考方案6】:

例如,在我的情况下,删除以下任何注释都会导致显示错误消息“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();
  

【讨论】:

【参考方案7】:

我通过将 spring 依赖项版本从 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>

【讨论】:

我尝试了上述所有解决方案,但只有这个对我有用!拯救我的一天!!!【参考方案8】:

对于那些不使用 JPA 而更喜欢排除 entityManagerFactory 并使用 Spring Data JDBC 或 Spring JDBC 的人可以排除 bean 以避免异常

@SpringBootApplication(exclude = HibernateJpaAutoConfiguration.class)

【讨论】:

【参考方案9】:

对于那些使用 Gradle 而不是 Maven 的人,请将其添加到构建文件中的依赖项中:

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

【讨论】:

【参考方案10】:

就我而言,这是由于 Intellij IDEA 默认将 Java 11 设置为默认项目 SDK,但项目是在 Java 8 中实现的。 我在文件 -> 项目结构 -> 项目(在项目设置中)中更改了“项目 SDK”

【讨论】:

这也是我的问题,当您尝试使用新下载的 IntellijIDEA 打开使用 Java8 的旧项目时,这就是解决方案。 在 macOS 上安装 Java8 - brew cask install 采用openjdk/openjdk/adoptopenjdk8【参考方案11】:

我能够通过将最大池大小值从 1 更改为 2 来解决问题

spring.datasource.hikari.maximum-pool-size=2

【讨论】:

【参考方案12】:

尝试使用@EnableTransactionManagement 注释类。我遇到了同样的问题,通过添加它得到了解决。

@EnableTransactionManagement
public class ConfigurationBean 

【讨论】:

【参考方案13】:

如果您使用 JDK 1.8.0_201 或最新版本,请尝试使用旧版 JDK。

我对 JDK1.8.0_201 有同样的问题,但是它可以在 JDK1.8.0_101 上使用,无需任何代码更改。

【讨论】:

【参考方案14】:

我通过在模型中添加实现 Serializable 解决了这个问题。

@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 + "]";
    
  

【讨论】:

【参考方案15】:

此错误也可能与您在“spring.datasource.url”中出现错误有关,例如当您提供错误的数据库名称时

【讨论】:

【参考方案16】:

我在 Eclipse Luna 上遇到了同样的问题。 我发现我使用的是 JDK12 和 Java 1.8。我把JDK换成JDK8,问题就解决了。 如果您想在 Eclipse 中检查您的 JDK,请转到

Window-> Preferences-> Java- >Installed JREs 

并检查它们是否与您的项目兼容。 祝你好运!

【讨论】:

同样,我发现我使用的是 JDK 12 并且刚刚切换回 JDK 8 并且工作正常【参考方案17】:

对我来说,它是 application.properties 上的数据库名称。当我提供正确的名称时,它工作正常。

【讨论】:

【参考方案18】:

谁仍然有同样的问题。请在 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

【讨论】:

【参考方案19】:

在我的情况下,我在 application.properties 中添加以下行 ,问题出在 Oracle 11g DB 驱动程序中

spring.jpa.database-platform=org.hibernate.dialect.OracleDialect

【讨论】:

谢谢,它解决了我的问题 :)【参考方案20】:

我们在映射一列时,要注意被映射的对面列的名称,例如:

/*users*/
@OneToMany(mappedBy = "partModel")
private List<UsersModel> usersModels;


/*parts*/
@ManyToOne
private PartModel partModel;

在此处查看 postModel。***

【讨论】:

【参考方案21】:

使用@Id 。为我工作。否则我会抛出错误。这取决于您的实体类或存储库中是否缺少任何东西

【讨论】:

【参考方案22】:

对我来说,这是另一个错误的结果

org.postgresql.util.PSQLException: FATAL: 用户密码验证失败

这意味着您只需要检查您的身份验证凭据

【讨论】:

【参考方案23】:

添加此依赖项后,我的错误已解决。

<!-- 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>

【讨论】:

【参考方案24】:

尝试更改 spring 版本。我有同样的问题,这对我有用

【讨论】:

【参考方案25】:

我通过为附加字段定义反向关系注释解决了我的问题

【讨论】:

【参考方案26】:

在我的情况下,我在尝试使 Proguard + Spring Boot 2 工作时遇到了这个错误。

-dontusemixedcaseclassnames 添加到 proguard.conf 修复它。

【讨论】:

【参考方案27】:

在我们的例子中,我们在 .properties 文件中有一些额外的行,新图像不需要这些行。

spring.jpa.properties.hibernate.cache.use_second_level_cache=true

显然没有该实体尝试加载的内容。

【讨论】:

【参考方案28】:

如果没有任何效果,那么我有一个解决方案 @Access(值=AccessType.FIELD) 在您使用 @Entity 之后在模型类下添加这一行,然后在定义 id 时添加该类和类之后,并且一直使用上述行。

【讨论】:

【参考方案29】:

在我的情况下,问题是多方面的,并且与 AWS 有关:

    正如@Tareq Islam 指出的那样,在 application.properties 中设置方言很有帮助。我用于 MySQL 5.6:

    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL55Dialect

    这之后的第二个问题是,由于 SSL 连接加密的更改,JDBC 无法连接到服务器。我在

    的帮助下修复了它

SSLHandShakeException No Appropriate Protocol

但我需要通过设置为 /etc/java-11-openjdk/security/java.security 来启用 TLS1.0

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

【讨论】:

【参考方案30】:
Make sure you have successfully build dependent maven/gradle based project with the correct mention version. Similarly you can add the dependent project in config like below.

        @Bean
        @Primary
        public LocalContainerEntityManagerFactoryBean entityManager() 
            EntityManagerFactoryBuilder builder = new 
            EntityManagerFactoryBuilder(adapter, jpaProperties.getProperties(),
                persistenceUnitManager);
            return builder
                .dataSource(dataSources()).packages("com.ABCApi.entity",
                    "com.PQRApi.entity", "com.XYZApi.entity")
                .persistenceUnit("entityManager").build();
        

【讨论】:

以上是关于在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误:调用 init 方法失败的主要内容,如果未能解决你的问题,请参考以下文章

在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误:调用 init 方法失败

在类路径资源中定义名称为“xxxEntityManagerFactory”的 bean 创建错误

在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误

弹簧靴 |在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误

如何解决在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误?

在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误。调用 init 方法失败;