【发布时间】:2023-03-25 07:45:01
【问题描述】:
我正在将 Spring Boot 从 1.4.2 迁移到 2.0.0,其中还包括将 Spring 批处理从 3.0.7 迁移到 4.0.0,当我尝试使用新 Spring 运行批处理时,它看起来不再有效批量版本。
当我尝试调试时,我发现批处理尝试从 batch_job_execution_context 获取数据时出现问题。
我可以看到从数据库中获取数据工作正常,但是新版本的批处理无法解析数据库数据
{"map":[{"entry":[{"string":["name",""]},{"string":["sender",""]},{"string": ["id",""]},{"string":["nav",""]},{"string":["created",140418]}]}]}
出现此错误:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Unexpected token (START_OBJECT), expected VALUE_STRING: need JSON String that contains type id (for subtype of java.lang.Object) at [Source: (ByteArrayInputStream); line: 1, column: 9] (through reference chain: java.util.HashMap["map"])
我发现,当我删除所有批处理元数据表并从头开始重新创建它们时,批处理似乎又可以工作了。元数据 JSON 格式好像变成了这个
{"name":"","sender":"145844","id":"","nav":"","created":"160909"}
我不想删除旧数据以使其再次工作,那么有什么办法可以解决这个问题吗?
还有其他人尝试过进行此升级吗?很高兴知道是否还有其他我可能没有注意到的重大变化。
谢谢
【问题讨论】:
-
这可能与jira.spring.io/browse/BATCH-2680有关。你试过 Spring Batch 4.0.1 版吗?
-
@MahmoudBenHassine 我已经尝试过了,但我仍然得到相同的杰克逊 MismatchedInputException。