现象:
connector在5.1.23版本后,java.util.Date的数据中小数秒会被拼接到sql中,导致更新、查询中timestamp用在where条件找不到存在的数据。
问题复盘:
我们项目中之前用到的connector版本是5.1.21,需要升级到5.1.32。昨天升级后发布一台机器发现了报错。报错的方法是完成生成派单(F单insert),然后更新该派单的rootid(F单update)的功能。我们在noah环境上复现了问题,并打开了mybatis输出sql语句的开关,发现输出的派单订单表f_n_order_info中的last_updated字段输出格式为:2017-11-29 16:41:31.088。
FOrderInfo实体类中lastUpdated字段的类型为java.util.Date。
/**
* 最后更新时间
*/
private Date lastUpdated;
mysql中f_n_order_info表中last_updated字段为TimeStamp类型。
last_updated
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP` COMMENT ‘最后更新时间’
出问题的update语句:
update f_n_order_info