当我在服务中调用并使用它时,出现以下错误。我尝试了很多东西但无法弄清楚。
实体类
@Entity
public class User{
@Column(name = "FIRSTDATE")
@Temporal(TemporalType.DATE)
private Date firstDate;
}
D去上课
@Data
public class UserDto {
private LocalDate firstDate;
}
dto Mapper 类
UserDto dto = new UserDto();
dto.setFirstDate(DateUtil.convertToLocalDate(entity.getFirstDate()));
convertToLocalDate 方法
public static LocalDate convertToLocalDate(Date dateToConvert) {
return dateToConvert == null ? null : Instant.ofEpochMilli(dateToConvert.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
}
当我在服务中调用并使用它时,出现以下错误。我尝试了很多东西但无法弄清楚。
java.lang.IllegalArgumentException: Could not serialize the execution context
at org.springframework.batch.core.repository.dao.JdbcExecutionContextDao.serializeContext(JdbcExecutionContextDao.java:306) ~[spring-batch-core-4.3.7.jar:4.3.7]
at org.springframework.batch.core.repository.dao.JdbcExecutionContextDao.updateExecutionContext(JdbcExecutionContextDao.java:146) ~[spring-batch-core-4.3.7.jar:4.3.7]
at org.springframework.batch.core.repository.support.SimpleJobRepository.updateExecutionContext(SimpleJobRepository.java:223) ~[spring-batch-core-4.3.7.jar:4.3.7]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.23.jar:5.3.23]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.23.jar:5.3.23]
....
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDate` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: java.util.HashMap["userDtoList"]->java.util.ArrayList[0]->com.example.batch.data.dto.UserDto["firstDate"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.13.4.jar:2.13.4]
at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1300) ~[jackson-databind-2.13.4.jar:2.13.4]
at com.fasterxml.jackson.databind.ser.impl.UnsupportedTypeSerializer.serialize(UnsupportedTypeSerializer.java:35) ~[jackson-databind-2.13.4.jar:2.13.4]
第一个日期值:
2023-05-15
我添加了这个依赖项
com.fasterxml.jackson.datatype:jackson-datatype-jsr310
。我无法解决这个问题。
我该如何解决这个问题?
使用 Spring Batch 4.3,您需要添加
jackson-datatype-jsr310
依赖项并使用 JavaTimeModule()
中的 Jackson2ExecutionContextStringSerializer
配置对象映射器。
版本 5.1 中将添加对 Java 日期和时间 API 类型的支持,请参阅 https://github.com/spring-projects/spring-batch/issues/3952。