Spring Boot中repo.save无法向H2数据库存储数据求助
问题解决:Spring Boot数据无法保存到H2数据库
问题说明
你搭建了一个简单的Spring Boot项目,尝试通过@RequestMapping将数据存入H2数据库,能获取URL参数但数据始终无法成功保存,以下是针对性的解决方法:
附你提供的请求截图和项目结构:

具体修复方案
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
相关产品推荐
相关产品推荐

