You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot整合Hibernate实例化LocalSessionFactoryBean空指针异常

Spring Boot集成Hibernate sessionFactory空指针异常修复方案

错误定位

报错核心为com.att.dmp.DBConfiguration中定义的sessionFactory Bean实例化失败,LocalSessionFactoryBean的工厂方法执行过程中抛出java.lang.NullPointerException,以下所有方案均为Java配置实现,无XML配置方案。

排查修复步骤

  • 检查DBConfiguration类的注解与依赖注入逻辑
    确保类上添加了@Configuration注解,sessionFactory方法上添加了@Bean注解,方法依赖的DataSource、配置环境类等对象全部通过@Autowired或者构造函数注入,禁止手动new对应实例。正确的sessionFactory配置示例如下:
    @Configuration
    public class DBConfiguration {
        // 注入Spring自动配置的数据源,不要手动创建
        @Autowired
        private DataSource dataSource;
        @Autowired
        private Environment env;
    
        @Bean
        public LocalSessionFactoryBean sessionFactory() {
            LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
            // 必须先设置数据源,否则后续方法调用会触发空指针
            sessionFactory.setDataSource(dataSource);
            // 实体类扫描路径需和实际实体类存放路径完全一致,无拼写错误
            sessionFactory.setPackagesToScan("com.att.dmp.entity");
            
            // 加载Hibernate配置属性
            Properties hibernateProperties = new Properties();
            hibernateProperties.put("hibernate.dialect", env.getProperty("spring.jpa.properties.hibernate.dialect"));
            hibernateProperties.put("hibernate.show_sql", env.getProperty("spring.jpa.show-sql", "false"));
            hibernateProperties.put("hibernate.hbm2ddl.auto", env.getProperty("spring.jpa.hibernate.ddl-auto", "none"));
            sessionFactory.setHibernateProperties(hibernateProperties);
            
            return sessionFactory;
        }
    }
    
  • 检查application.properties配置项
    确认所有数据源、JPA相关配置无拼写错误、无缺失:
    # 数据源配置
    spring.datasource.url=jdbc:mysql://你的数据库地址/库名
    spring.datasource.username=数据库用户名
    spring.datasource.password=数据库密码
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    # Hibernate配置
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
    spring.jpa.show-sql=true
    spring.jpa.hibernate.ddl-auto=update
    
  • 检查依赖兼容性
    确保项目引入的spring-boot-starter-data-jpa依赖版本和手动引入的spring-orm版本兼容,Spring Boot 2.x默认适配Hibernate 5.x,不要引入版本不匹配的Hibernate单独依赖。
  • 检查实体类注解
    所有需要被sessionFactory扫描的实体类都添加了@Entity注解,不存在包路径拼写错误导致扫描不到类的情况。

内容的提问来源于stack exchange,提问作者Jeevan Gyawali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:57:03