当前使用版本(必须填写清楚,否则不予处理)
3.2.0
该问题是怎么引起的?(最新版上已修复的会直接close掉)
全部是正常步骤,包括@TableName,@TableField注解的使用
重现步骤
无
报错信息
attempting to get column 'name' from result set. Cause: java.sql.SQLDataException: Cannot convert string '测试公司一' to java.sql.Timestamp value\n; Cannot convert string '测试公司一' to java.sql.Timestamp value; nested exception is java.sql.SQLDataException: Cannot convert string '测试公司一' to java.sql.Timestamp value
备注:个人调试信息
映射类字段和sql语句 不匹配,导致ResultSet转换错误。
myabtis在调用DefaultResultSetHandler.createUsingConstructor()方法的时候会用生成的Boundsql执行结果跟全参构造函数的参数数组进行对比,然后获取对应类型的Handler,而boundsql在mybaits-plus初始化的时候生成,TableInfo类的allSqlSelect参数在初始化的时候莫名其妙的将各个字段的顺序变化了一下,由于开发者用的是lombok插件,实在找不到 allSqlSelect 属性的初始化位置,所以提出此issue,期望得到您的解决。
举例,实体类的全参构造函数是 User(String name,String pwd,Date create_time,Date update_time) 生成的Sql应该是 select name, pwd, create_time, update_time from user;
但是 tableinfo 初始化的时候生成的allSqlSelect是 name, create_time, pwd, update_time,参数pwd的位置跟create_time调换,导致本应该解析为string类型的参数会被mybatis强制解析为timestamp
Comment From: miemieYaho
那你就给个无参构造
Comment From: coolerfall
有解决么,遇到相同的问题
Comment From: Jenes9924
有解决么,遇到相同的问题
没法解决,源码是固定的,我换成手动的了。
所以有人建议轻易不要用国产框架。。。。当然,根本的锅还是lombok插件导致的
Comment From: qmdx
有解决么,遇到相同的问题
没法解决,源码是固定的,我换成手动的了。
所以有人建议轻易不要用国产框架。。。。当然,根本的锅还是lombok插件导致的
你为什么不找到问题并解决问题,然后贡献自己的力量,一味的只知道抱怨,你免费用别人的劳动成果还埋汰别人这样合适吗?
Comment From: pengchengyin
别用全参构造