当前使用版本(必填,否则不予处理)

3.4.0

该问题是如何引起的?(确定最新版也有问题再提!!!)

实体 属性是上使用typeHandler 使用更新的时候 会出现报错 不走类型处理器

重现步骤(如果有就写完整)

1.实体属性上增加typeHandler 2.service方法中: lambdaUpdate() .set(DrawCashRecord::getStatus, statusEnum) .set(DrawCashRecord::getFinishTime, LocalDateTime.now()) .eq(DrawCashRecord::getRecordId, recordId) .update();

报错信息

报类型不匹配 因为没有执行类型处理器 所以数据更新失败 在3.3.0版本中 我也提过一次这种问题 那个是在查询的时候 类型处理器不生效 (问题ID: #2795) 在3.4.0版本中 又出现了更新不生效 你们解决查询 不一起解决掉 新增修改删除 等操作吗?

目前我解决方法是这样: service方法中: DrawCashRecord drawCashRecord = new DrawCashRecord() .setRecordId(recordId) .setStatus(statusEnum) .setFinishTime(LocalDateTime.now()); return updateById(drawCashRecord); 这样是执行成功的

Comment From: miemieYaho

你这样当然不走咯

Comment From: abc136609517

不可能不走啊 你看下我提的3.3.0那个BUG 跟这个问题一模一样 都是用lambdaUpdate() 来操作 再说这个方法是mybatis plus的内部方法 不应该自己都不支持自己的类型转换器啊 #2795

Comment From: abc136609517

我这个是finishTime是用的typeHandler 那我现在要用这个语句: lambdaUpdate() .set(DrawCashRecord::getStatus, statusEnum) .set(DrawCashRecord::getFinishTime, LocalDateTime.now()) .eq(DrawCashRecord::getRecordId, recordId) .update();

请问我要怎么办? 如何修改FinishTime的值? 我这样写是报错的

Comment From: miemieYaho

.update(entity)

Comment From: abc136609517

那这个问题 下个版本解决吗?还是不处理这个问题了

Comment From: abc136609517

那为什么lambdaQuery() 的方法处理了我那个typeHandler问题(#2795) 而lambdaUpdate() 不处理或者处理不了呢?

Comment From: abc136609517

lambdaUpdate() .set(DrawCashRecord::getStatus, statusEnum) .set(DrawCashRecord::getFinishTime, LocalDateTime.now()) .in(DrawCashRecord::getRecordId, recordIds) .update();

本来一句话可以实现的 我现在是分成3段写了:

DrawCashRecord drawCashRecord = new DrawCashRecord() .setStatus(statusEnum) .setFinishTime(LocalDateTime.now());

LambdaUpdateWrapper<DrawCashRecord> queryWrapper = Wrappers.<DrawCashRecord>lambdaUpdate() .in(DrawCashRecord::getRecordId, recordIds);

update(drawCashRecord, queryWrapper);

Comment From: abc136609517

lambdaUpdate() .set(DrawCashRecord::getStatus, statusEnum) .set(DrawCashRecord::getFinishTime, LocalDateTime.now()) .in(DrawCashRecord::getRecordId, recordIds) .update();

本来一句话可以实现的 我现在是分成3段写了:

DrawCashRecord drawCashRecord = new DrawCashRecord() .setStatus(statusEnum) .setFinishTime(LocalDateTime.now());

LambdaUpdateWrapper<DrawCashRecord> queryWrapper = Wrappers.<DrawCashRecord>lambdaUpdate() .in(DrawCashRecord::getRecordId, recordIds);

update(drawCashRecord, queryWrapper);

Comment From: miemieYaho

没用过mybatis?唯一能处理select的只有resultmap