异常信息如下:
com.fasterxml.jackson.databind.exc.InvalidTypeIdException:Missing type id when trying to resolve subtype of [map type;class java.util.HashMap,[simple type,class java.lang.String]->[simple type,class java.lang.Object]]:missing type id property ‘@class’
原因是:jackjon 老版本序列化的时候,没有加上”@class”:”java.util.HashMap”,新版本的jackjon再对之前的老数据进行反序列化的时候,发现缺少@class,因此报上面的异常。
解决思路:在原先的数据上面加上@class
修数步骤如下:
具体步骤如下:
第一步:获取MAX(t.JOB_INSTANCE_ID)
SELECT MAX(t.JOB_INSTANCE_ID) FROM BATCH_JOB_INSTANCE t WHERE t.JOB_NAME = '批量名称';
第二步:MAX(t.JOB_INSTANCE_ID)替换?,获取JOB_EXECUTION_ID
SELECT t.JOB_EXECUTION_ID FROM BATCH_JOB_EXECUTION t WHERE t.JOB_INSTANCE_ID = '?';
第三步:JOB_EXECUTION_ID替换?
UPDATE BATCH_JOB_EXECUTION_CONTEXT t SET t.SHORT_CONTEXT = '{"@class":"java.util.HashMap"}' WHERE t.JOB_EXECUTION_ID = '?';
第四步:JOB_EXECUTION_ID替换? 获取多个 STEP_EXECUTION_ID
SELECT t.STEP_EXECUTION_ID FROM BATCH_STEP_EXECUTION t WHERE t.JOB_EXECUTION_ID = '?';
第五步:将多个 STEP_EXECUTION_ID替换?
Oracle:
UPDATE BATCH_STEP_EXECUTION_CONTEXT SET t.SHORT_CONTEXT = json_mergepatch('{"@class":"java.util.HashMap"}',t.SHORT_CONTEXT)
WHERE t.STEP_EXECUTION_ID IN ('?', '?');
Mysql:
UPDATE BATCH_STEP_EXECUTION_CONTEXT SET t.SHORT_CONTEXT = json_merge_patch('{"@class":"java.util.HashMap"}',t.SHORT_CONTEXT)
WHERE t.STEP_EXECUTION_ID IN ('?', '?');