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

SpringBoot+JPA+Gradle+MySQL中@PostMapping保存空对象问题求助

问题分析与解决方案

嘿,我仔细看了你的代码和遇到的问题,马上就找到了根源——你的User实体类缺少了属性的getter和setter方法,这直接导致了两个核心问题:

为什么会出现这些异常?

  • 保存时字段为null:当你用PostMan发送JSON请求时,Spring MVC的@RequestBody需要通过setter方法来给User对象的name属性赋值。没有setter的话,name会一直保持默认的null,JPA保存到数据库时自然只有自增的id有值。
  • 查询返回空对象列表:当JPA从数据库查询出User数据后,Spring要把对象序列化成JSON返回给前端,这时候需要getter方法来读取属性值。没有getter的话,序列化后的JSON里就没有name字段,看起来就像是空对象。

解决方案

方法一:手动添加Getter和Setter

修改你的User实体类,给id和name都加上getter和setter方法:

package db.example.autodbconnect.entities;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column
    private String name;

    // Getter和Setter方法
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

方法二:用Lombok简化代码(推荐)

如果不想手动写大量重复的getter/setter,可以用Lombok的@Data注解自动生成这些方法,步骤如下:

  1. 在build.gradle的dependencies中添加Lombok依赖:
implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
  1. 修改User实体类,加上@Data注解:
package db.example.autodbconnect.entities;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;

@Entity
@Table
@Data
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column
    private String name;
}

其他配置验证

我检查了你的Controller、Service、Repository、build.gradle和application.properties,所有配置都是正常的:

  • PostMan的请求格式正确(JSON字段名和实体类属性名一致)
  • JPA的ddl-auto=update配置能正确生成表结构
  • 依赖包也都配齐了,没有缺失情况

修改完实体类后,重启你的SpringBoot应用,再用PostMan测试创建和查询接口,就能正常保存和返回用户数据啦!

内容的提问来源于stack exchange,提问作者M Nouman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:10:51