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

Spring Boot中repo.save无法向H2数据库存储数据求助

问题解决:Spring Boot数据无法保存到H2数据库

问题说明

你搭建了一个简单的Spring Boot项目,尝试通过@RequestMapping将数据存入H2数据库,能获取URL参数但数据始终无法成功保存,以下是针对性的解决方法:

附你提供的请求截图和项目结构:
localhost请求截图
项目结构截图

具体修复方案

1. 替换控制器注解

将@Controller改为@RestController——@Controller默认用于返回视图页面,而你需要处理JSON请求并返回数据,@RestController整合了@Controller和@ResponseBody,既能自动解析@RequestBody的请求体,也能将返回对象序列化为JSON。

修改后的控制器代码:

@RestController
public class TrialTwoController {
    
    @Autowired
    private Repository repos;
    
    @RequestMapping("/")
    public String home() {
        return "home.jsp";
    }
    
    // 推荐直接用@PostMapping替代@RequestMapping,明确请求方法
    @PostMapping("/addUser")
    public TrailTwo post(@RequestBody TrailTwo trail) {
        repos.save(trail);
        return trail;
    }   
}

2. 为实体类添加无参构造函数

JPA要求实体类必须具备无参构造函数,否则无法实例化对象。给TrailTwo类添加无参构造:

@Entity
public class TrailTwo {
    @Id
    private int id;
    private String name;

    // 添加无参构造函数
    public TrailTwo() {}

    // 可选:添加带参构造方便使用
    public TrailTwo(int id, String name) {
        this.id = id;
        this.name = name;
    }

    // 原有getter、setter方法保持不变
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

3. 规范请求发送方式

确保请求为POST方法,且请求体为JSON格式,请求头设置Content-Type: application/json。示例请求内容:

{"id": 1, "name": "Anshul"}

可以用curl测试:

curl -X POST -H "Content-Type: application/json" -d '{"id":1,"name":"Anshul"}' http://localhost:8080/addUser

4. 验证H2数据库

启动项目后打开H2控制台(http://localhost:8080/h2-console),确认JDBC URL与application.properties中一致(jdbc:h2:mem:anshul),登录后执行SELECT * FROM TRAIL_TWO;查看数据是否插入成功。


内容的提问来源于stack exchange,提问作者Anshul Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:15:33