spring boot+spring jpa+hibernate 为date类型的属性传入null值报错

1.项目配置

项目框架 spring boot + spring jpa +hibernate

2.情况描述

实体类中存在date类型的字段

@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Column(name = "refilme_time")
@Temporal(value = TemporalType.DATE)
private Date refilmdate;
在前端未设置改属性的值,该值默认为null,报如下错误

2021-05-28 17:18:10.893 WARN 9064 --- [nio-7779-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'issue' on field 'refilmdate': rejected value [null]; codes [typeMismatch.issue.refilmdate,typeMismatch.refilmdate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [issue.refilmdate,refilmdate]; arguments []; default message [refilmdate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'refilmdate'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat @com.fasterxml.jackson.annotation.JsonFormat @javax.persistence.Column @javax.persistence.Temporal java.util.Date] for value 'null'; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [null]]]

3.解决方案

在controller中为date类型注册customEditor即可

@InitBinder
public void InitBinder(WebDataBinder dataBinder) {
dataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
@Override
public void setAsText(String value) {
try {
setValue(new SimpleDateFormat("yyyy-MM-dd").parse(value));
} catch (ParseException e) {
setValue(null);
}
}

@Override
public String getAsText() {
return new SimpleDateFormat("yyyy-MM-dd").format((Date) getValue());
}
});
}

posted on   jejas  阅读(771)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示