Spring Boot启动报错:创建dataSourceScriptDatabaseInitializer Bean失败
解决Spring Boot JPA启动时data.sql插入ID为NULL的错误
常见原因及修复方法
1. 实体类ID未配置自增策略
若实体类的ID字段未设置自动生成策略,H2数据库不会自动为ID赋值,插入时就会触发ID为NULL的错误。
修复示例:
@Entity public class YourEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 添加自增策略 private Long id; // 其他字段及getter/setter方法 }
2. data.sql中未指定ID值
如果实体类ID没有自增策略,或是你需要手动指定ID,必须在INSERT语句中明确提供ID值。
错误示例:
INSERT INTO your_entity(name) VALUES ('测试内容');
修复后示例:
INSERT INTO your_entity(id, name) VALUES (1, '测试内容');
3. 检查H2数据库表结构
确认数据库表的ID列已设置自增属性(AUTO_INCREMENT):
- 若通过JPA自动建表,确保实体类配置正确;
- 若手动建表,需在CREATE TABLE语句中指定:
CREATE TABLE your_entity ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) );
4. 调整Spring Boot初始化配置
使用Spring Boot 2.5+版本时,可检查初始化脚本的执行时机,避免表结构未创建完成时执行data.sql。在application.properties中添加配置:
spring.sql.init.mode=always spring.jpa.hibernate.ddl-auto=update
内容的提问来源于stack exchange,提问作者Shubham Mishra
相关产品推荐
相关产品推荐

