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

Spring Boot+Spring Data JPA操作PostgreSQL时String字段存为null问题

问题排查与解决方案

核心问题分析

从你描述的现象(仅ID存入、departmentName为null,且调试时实体字段值已为null)来看,问题出在JSON请求体到Java实体的绑定环节,而非数据库存储逻辑。以下是逐步排查和解决步骤:

1. 修正请求体的JSON格式

你提供的请求体不符合JSON规范:键名departmentName没有用双引号包裹,Jackson解析器无法识别该字段,导致无法为实体赋值。
正确的请求体格式:

{
  "departmentName": "IT"
}

JSON要求所有字符串类型的键和值必须用双引号包裹(单引号或无引号都不合法)。

2. 确认Postman请求配置

  • 确保请求Header中添加Content-Type: application/json,否则Spring不会用Jackson解析请求体;
  • 确认请求Body选择raw格式,且右侧下拉框选中JSON;
  • 验证请求地址http://localhost:8081/api/v1/department与Controller映射一致。

3. 修复YAML配置格式错误

你的application.yml中JPA配置存在缩进错误,会导致部分配置不生效(比如show-sql可能无法开启),修正后:

spring:
  application:
    name: department-service
  config:
    import:
    - "optional:configserver:http://localhost:8088"
  datasource:
    url: jdbc:postgresql://localhost:5432/postgres
    username: postgres
    password: ******
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update
    properties:
      hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect

注意:datasource和jpa需要缩进在spring节点下,否则Spring无法识别这些配置。

4. 验证Lombok是否正常工作

实体类使用了@Data注解,需确保Lombok正确配置:

  • Maven依赖检查:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
  • IDE插件与配置:
    • IntelliJ IDEA需安装Lombok插件,并在Settings > Build, Execution, Deployment > Compiler > Annotation Processors中勾选Enable annotation processing;
    • Eclipse需安装Lombok插件并启用注解处理。

5. 调试验证绑定结果

在Controller方法中添加日志,确认接收的实体字段值:

@PostMapping("/department")
public Department createDepartment(@RequestBody Department department) {
    System.out.println("接收的部门对象:" + department); // 打印实体信息
    return service.saveDepartment(department);
}

如果打印结果中departmentName仍为null,优先检查请求体格式和Content-Type配置;如果有值,则需排查JPA存储逻辑(但根据你的描述,大概率是绑定环节问题)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:28:16