简体   繁体   English

创建名为“entityManagerFactory”的 bean 时出错 - 嵌套异常是 java.lang.NullPointerException

[英]Error creating bean with name 'entityManagerFactory - nested exception is java.lang.NullPointerException

I'm only learning Java and Spring and after several projects/tutorials went well I'm stuck with this error on a new project:我只学习 Java 和 Spring,在几个项目/教程进展顺利之后,我在一个新项目中遇到了这个错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; org.springframework.beans.factory.BeanCreationException:创建名为“entityManagerFactory”的 bean 在 class 路径资源 [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class] 中定义时出错:调用 init 方法失败; nested exception is java.lang.NullPointerException嵌套异常是 java.lang.NullPointerException

I googled and checked stackoverflow questions, but haven't seen "nested exception is java.lang.NullPointerException" in any cases.我用谷歌搜索并检查了 stackoverflow 问题,但在任何情况下都没有看到“嵌套异常是 java.lang.NullPointerException” It's quite a vague error message to me, so I can't understand what's causing the error.这对我来说是一个非常模糊的错误消息,所以我不明白是什么导致了错误。

Here's my pom.xml file这是我的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>shoptest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>shoptest</name>
    <description>Shop Test for my project</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-hateoas</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</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>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Edit : Stack trace:编辑:堆栈跟踪:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.19.jar:5.3.19]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.19.jar:5.3.19]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.19.jar:5.3.19]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.19.jar:5.3.19]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.19.jar:5.3.19]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.19.jar:5.3.19]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.19.jar:5.3.19]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.19.jar:5.3.19]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.19.jar:5.3.19]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.19.jar:5.3.19]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.7.jar:2.6.7]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:740) ~[spring-boot-2.6.7.jar:2.6.7]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:415) ~[spring-boot-2.6.7.jar:2.6.7]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-2.6.7.jar:2.6.7]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1312) ~[spring-boot-2.6.7.jar:2.6.7]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) ~[spring-boot-2.6.7.jar:2.6.7]
    at com.example.shoptest.ShoptestApplication.main(ShoptestApplication.java:10) ~[classes/:na]
Caused by: java.lang.NullPointerException: null
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processFkSecondPassesInOrder(InFlightMetadataCollectorImpl.java:1672) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final]
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1623) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final]
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:295) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1460) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1494) ~[hibernate-core-5.6.8.Final.jar:5.6.8.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.19.jar:5.3.19]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.19.jar:5.3.19]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.19.jar:5.3.19]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.19.jar:5.3.19]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.19.jar:5.3.19]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.19.jar:5.3.19]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.19.jar:5.3.19]
    ... 16 common frames omitted

This NPE could be caused by something in your JPA entity model definition that Hibernate is not able to deal with.此 NPE 可能是由 JPA 实体 model 定义中 Hibernate 无法处理的内容引起的。 Probably this could be a misconfiguration in your JPA entities definition (but of course could be other stuff also).这可能是您的 JPA 实体定义中的错误配置(但当然也可能是其他内容)。

One modification you could do in order to investigate deeper is to enable debug or even trace logging for the hibernate classes.为了进行更深入的调查,您可以进行的一项修改是为 hibernate 类启用调试甚至跟踪日志记录。 This would probably give some good hint on where to look at.这可能会给出一些关于在哪里看的很好的提示。

Additionally, is your JPA entity model very complex?另外,你的 JPA 实体 model 是不是很复杂? Can you post it here?你能在这里张贴吗?

The reason turned out to be the wrong type of the field in the Embedded class for a composite key.原因原来是组合键Embedded class中的字段类型错误。 I thought I had to refer to the Id column of another entity and its type, but I had to refer to the whole object.我以为我必须引用另一个实体的 Id 列及其类型,但我必须引用整个 object。

So instead this implementation所以这个实现

public class OrderItemPK implements Serializable {

    @ManyToOne
    @JoinColumn(name="ORDER_ID")
    private **Long** orderId;

    @ManyToOne
    @JoinColumn(name="PRODUCT_ID")
    private **Long** productId;

should've been this:应该是这样的:

public class OrderItemPK implements Serializable {

    @ManyToOne
    @JoinColumn(name="ORDER_ID")
    private **Order** order;

    @ManyToOne
    @JoinColumn(name="PRODUCT_ID")
    private **Product** product;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 创建名为“_filterChainProxy”的 bean 时出错:bean 初始化失败; 嵌套异常是 java.lang.NullPointerException - Error creating bean with name '_filterChainProxy': Initialization of bean failed; nested exception is java.lang.NullPointerException 创建名为“baseController”的 bean 时出错:调用 init 方法失败; 嵌套异常是 java.lang.NullPointerException - Error creating bean with name 'baseController': Invocation of init method failed; nested exception is java.lang.NullPointerException 我收到此错误“无法启动 bean 'documentationPluginsBootstrapper';嵌套异常是 java.lang.NullPointerException” - I am getting this error "Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException" 创建名称为&#39;entityManagerFactory&#39;的bean时出错; 嵌套异常是HibernateException:缺少表 - Error creating bean with name 'entityManagerFactory'; nested exception is HibernateException: Missing table java.lang.IllegalStateException 导致创建名为“entityManagerFactory”的 bean 时出错 - Error creating bean with name 'entityManagerFactory' caused by java.lang.IllegalStateException 无法实例化bean构造函数引发异常; 嵌套的异常是java.lang.NullPointerException - Failed to instantiate bean Constructor threw exception; nested exception is java.lang.NullPointerException Spring 初始化中没有详细信息创建名为“entityManagerFactory”+ NullPointerException 的 bean 时出错 - No details in Spring initialization Error creating bean with name 'entityManagerFactory' + NullPointerException RedisSystemException: 未知的 redis 异常; 嵌套异常是 java.lang.NullPointerException - RedisSystemException: Unknown redis exception; nested exception is java.lang.NullPointerException 解决 java.lang.AbstractMethodError,在 Spring 中创建名为“entityManagerFactory”的 bean 时出错 - Resolving java.lang.AbstractMethodError, Error creating bean with name 'entityManagerFactory' in Spring java.lang.AssertionError:创建在类路径资源[applicationContext.xml]中定义的名称为&#39;entityManagerFactory&#39;的bean时出错: - java.lang.AssertionError: Error creating bean with name 'entityManagerFactory' defined in class path resource [applicationContext.xml]:
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM