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

PostgreSQL表仅部分字段可接收数据的问题求助

问题原因及解决办法

核心问题

JSON请求中的字段采用下划线命名(date_added、last_edited),但实体类对应属性是驼峰命名(dateAdded、lastEdited),Spring默认的Jackson序列化规则未开启下划线与驼峰的自动转换,导致这两个字段无法从JSON中绑定值,最终插入数据库时为null,触发非空约束错误。

解决办法

方式一:全局开启下划线转驼峰映射

在Spring Boot配置文件中添加Jackson命名策略配置:

  • 若使用application.yml:
spring:
  jackson:
    property-naming-strategy: SNAKE_CASE
  • 若使用application.properties:
spring.jackson.property-naming-strategy=SNAKE_CASE

该配置会全局生效,所有下划线命名的JSON字段将自动映射到驼峰命名的实体属性。

方式二:局部字段指定JSON映射

如果不需要全局配置,可在实体类对应字段上添加@JsonProperty注解,明确指定JSON字段名:

@Data
@Entity
@Table(name = "recipe", schema = "public")
@AllArgsConstructor
@NoArgsConstructor
public class Recipe {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", updatable = false, nullable = false)
    private long id;
    
    @Column(name = "name")
    private String name;
    
    @Column(name = "instructions")
    private String instructions;
    
    @Column(name = "date_added", nullable = false)
    @JsonProperty("date_added") // 指定JSON字段名
    private String dateAdded;
    
    @Column(name = "last_edited", nullable = false)
    @JsonProperty("last_edited") // 指定JSON字段名
    private String lastEdited;
}

验证

修改完成后重新通过Postman发送原JSON请求,date_added和last_edited字段会正确绑定值,插入数据库时不再触发非空约束错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:15:12