当前位置: 首页 > news >正文

Mybatis plus异常: type `java.time.LocalDateTime` not supported by default

1、问题:

Java数据库实体对象有字段如下:

@TableField(typeHandler = JacksonTypeHandler.class)
private Map<String, Object> dataDetail;

如果dataDetail中有LocalDateTime对象,在保存时会报如下异常:

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: java.util.HashMap["updateAt"])
        at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)
        at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1312)
        at com.fasterxml.jackson.databind.ser.impl.UnsupportedTypeSerializer.serialize(UnsupportedTypeSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:808)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:764)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
        at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:479)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:318)
        at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4719)
        at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3964)
        at com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.toJson(JacksonTypeHandler.java:66)

2、原因

fastxml默认不支持LocalDateTime对象映射

3、方案

在程序启动时(例如可以在某个用@Configuration标记的类里)设置JacksonTypeHandler的ObjectMapper:

static {
        ObjectMapper objectMapper = new ObjectMapper()
                .registerModule(new JavaTimeModule());
        JacksonTypeHandler.setObjectMapper(objectMapper);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/49961.html

相关文章:

  • 【Godot4.4】模拟类似网页的布局
  • DEV-C++ 为什么不能调试?(正确解决方案)
  • 现代优雅品牌包装徽标设计衬线英文字体安装包 Halone Modern Serif Typeface
  • 爬蟲動態IP代理與數據採集穩定性
  • 如何在 NocoBase 中实现 CRM 的线索转化
  • Linux : 环境变量
  • 汇票,银票,纸票,本票,支票,商票的关系和分类?
  • 基于编程语言的建筑行业施工图设计系统开发可行性研究————从参数化建模到全流程自动化的技术路径分析
  • 机器学习笔记:初识图神经网络
  • 测试工程师的DeepSeek提效3:质保中的应用
  • AI数字人口播源码开发全解析
  • servlet tomcat
  • C++发展
  • 力扣刷题——4.寻找两个正序数组的中位数
  • Linux基础开发工具—软件安装器yum。人类世界软件安装器一夜消失,而我却会用yum
  • CentOS 7中安装Dify
  • axios启动!
  • 【技海登峰】Kafka漫谈系列(四)基于Kraft模式实现Kafka集群部署与配置
  • LLM 大模型基础认知篇
  • python-leetcode-不同的二叉搜索树 II
  • 2606. 找到最大开销的子字符串
  • 单片机入门(一)
  • Kconfig与CMake初步模块化工程3
  • 贪心算法--给定一个只包含X和.字符串
  • mysql表的约束
  • springboot可以同时处理多少个请求
  • 2503,D比C更易重构
  • 将md格式转jupyter并运行
  • Redis 实现延迟队列的方案
  • 【STM32项目实战系列】基于STM32G474的FDCAN驱动配置