ShardingSphere 使用distinct或者GROUP BY 报错
distinct
使用sharding-sphere分表后 对于使用distinct 会报错 类型对象属性转化异常 ,但是去掉DISTINCT后 成功运行 无报错 返回结果正常
但是没有了去重
SELECT DISTINCT
log.*
FROM
work_log log,
work_log_visible_team visible
WHERE
log.isDel = 0
AND visible.isDel = 0
AND visible.teamId IN ( 1122419, 1715173268037259266, 1716752277405650946, 1719999103483203585, 1719999413580681217, 1719999275596468226 )
AND log.id = visible.logId
ORDER BY
log.workDate DESC,
log.beginTime DESC
LIMIT 20
一开始感觉大概是sharding-sphere对于distinct的支持问题
改成了使用GROUP BY log.id 去重复也报相同错
查看栈信息:
最后确定到了这里
查看源码:
直接返回了Timestamp类的Object convertValue也就返回了Timestamp类的Object
导致ResultSetUtil.convertValue(mergeResultSet.getValue(columnIndex, String.class), String.class); 返回了Timestamp对象 无法强转成String
报错了
解决方法
不使用org.apache.ibatis.logging.stdout.StdOutImpl的日志
#mybatis-plus:
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl