当前使用版本(必填,否则不予处理)
3.4.0
该问题是如何引起的?(确定最新版也有问题再提!!!)
在线程池中提交多线程任务,线程任务中使用到了updateById来更新一条记录,不同的线程更新的是不同的记录,数据是不同的,但是在打印出的sql日志中,设置参数时一个线程把另一个线程中记录的参数拿过来了,使用的数据库是postgresql。下面有更新的时候的日志,分别是更新前要更新的对象的属性、mybatis设置的参数、更新后该对象的属性;第一个记录正常更新,第二个记录也正常更新,但是第二个记录被设置了错误的参数,导致后面再次查询的时候,出现了单记录查询语句查询出两条记录的异常。 ` 更新前:{"id":12,"version":1,"createTime":1604021904626,"startTime":1604021904220,"count":1,"interval":0,"userId":3,"needRecordScreen":true,"status":"RUNNING","tasks":null,"associatedTask":{"WECHAT":{"SINGLE_CALL_VIDEO":[12]}}} 2020-10-30 09:43:13.558 DEBUG 3405 --- [atcher-thread-2] c.f.a.s.m.TaskRequestMapper.updateById : ==> Parameters: 2020-10-30T09:38:24.626(LocalDateTime), 2020-10-30T09:38:24.220(LocalDateTime), 1(Integer), 0(Long), 3(Integer), true(Boolean), 1(Integer), {"WECHAT":{"SINGLE_CALL_VIDEO":[12]}}(PGobject), 2(Integer), 12(Long), 1(Integer) 更新后:{"id":12,"version":2,"createTime":1604021904626,"startTime":1604021904220,"count":1,"interval":0,"userId":3,"needRecordScreen":true,"status":"RUNNING","tasks":null,"associatedTask":{"WECHAT":{"SINGLE_CALL_VIDEO":[12]}}}
更新前:{"id":5,"version":1,"createTime":1604021883527,"startTime":1604021883121,"count":1,"interval":0,"userId":3,"needRecordScreen":true,"status":"RUNNING","tasks":null,"associatedTask":{"WECHAT":{"SINGLE_CALL_VIDEO":[5]}}} 2020-10-30 09:43:13.558 DEBUG 3405 --- [atcher-thread-1] c.f.a.s.m.TaskRequestMapper.updateById : ==> Parameters: 2020-10-30T09:38:03.527(LocalDateTime), 2020-10-30T09:38:03.121(LocalDateTime), 1(Integer), 0(Long), 3(Integer), true(Boolean), 1(Integer), {"WECHAT":{"SINGLE_CALL_VIDEO":[12]}}(PGobject), 2(Integer), 5(Long), 1(Integer) 更新后:{"id":5,"version":2,"createTime":1604021883527,"startTime":1604021883121,"count":1,"interval":0,"userId":3,"needRecordScreen":true,"status":"RUNNING","tasks":null,"associatedTask":{"WECHAT":{"SINGLE_CALL_VIDEO":[5]}}} `
Comment From: NeptuneNeptune
好像是我自己造成的,尴了个大尬