Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.OffsetDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (or disable `MapperFeature.REQUIRE_HANDLERS_FOR_JAVA8_TIMES`) (through reference chain: java.util.ImmutableCollections$ListN[0]->java.util.HashMap["时间"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.19.0.jar:2.19.0]
at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1359) ~[jackson-databind-2.19.0.jar:2.19.0]
at com.fasterxml.jackson.databind.ser.impl.UnsupportedTypeSerializer.serialize(UnsupportedTypeSerializer.java:34) ~[jackson-databind-2.19.0.jar:2.19.0]
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:868) ~[jackson-databind-2.19.0.jar:2.19.0]
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:759) ~[jackson-databind-2.19.0.jar:2.19.0]
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:719) ~[jackson-databind-2.19.0.jar:2.19.0]
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:34) ~[jackson-databind-2.19.0.jar:2.19.0]
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) ~[jackson-databind-2.19.0.jar:2.19.0]
这个错误已经提示的很明白了:jackson 不支持 Java8 的 OffsetDateTime 类型。
Java 8 date/time type
java.time.OffsetDateTimenot supported by default: add Module “com.fasterxml.jackson.datatype:jackson-datatype-jsr310” to enable handling
以下是 AI 的回答:
针对Gradle项目中java.time.OffsetDateTime的序列化问题,需结合Gradle依赖管理和Jackson模块配置解决:
-
添加依赖配置
在build.gradle文件的dependencies块中添加JSR-310模块依赖:implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.0'该模块专为Java 8日期/时间类型提供支持。
-
配置ObjectMapper
在项目初始化时注册JavaTimeModule并禁用时间戳格式:ObjectMapper mapper = new ObjectMapper() .registerModule(new JavaTimeModule()) .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);此配置确保日期以ISO-8601字符串格式(如
2025-08-20T15:53:03+08:00)序列化。 -
Spring Boot集成(可选)
若使用Spring Boot,可通过application.properties全局配置:spring.jackson.serialization.write-dates-as-timestamps=false或通过
@Bean自定义ObjectMapper。 -
字段级格式化
对特定字段使用@JsonFormat注解精细化控制:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ssXXX") private OffsetDateTime eventTime;支持自定义时区和显示格式。
注意事项:
- 确保Gradle配置的依赖版本与项目其他Jackson组件(如
jackson-core)版本一致 - 多模块项目中需在主模块或共享库中统一配置
ObjectMapper - 测试时验证日期字段的序列化结果是否符合预期格式
我感觉就是源码里没有注册 registerModule(new JavaTimeModule()) 这样呢,

那这个还不好改呢,我看了看这个 JmixPivotTableSerializer 不是一个 bean。
如果你着急用,可以先自己创建一个带简单DateTime 的 DTO,然后把你要显示的数据做映射。Pivottable 就显示这个 DTO集合。
英文论坛也提了个问:Add support for OffsetDateTime in Pivottable - Support - Jmix