这里写目录标题

  • 问题
  • 解释问题
  • 分析问题
  • 解决问题

问题

服务端orm的框架使用的是mybatis ,当insert管理员时,出现如下错误:

org.apache.ibatis.reflection.ReflectionException:  Could not set property 'id' of 'class com.xxx.Manager' with value '1407257724219068417' Cause: java.lang.IllegalArgumentException: java.lang.ClassCastException@78c9c0fb

解释问题

上述问题解释成中文就是:无法将值1407257724219068417设置为类com.xxx.Manager的id属性值,是因为该值是非法参数。

什么情况会出现非法参数,可以举出如下的例子说明:

public class ClassLoaderCheck {public static void main(String[] args) {//毫秒时间戳格式String timeStamp = "1658635894000";//要转成后的时间格式SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 时间戳转换成时间System.out.println(sdf.format(new Date(timeStampLong)));}
}

可以看其输出结果为:

我们将上面毫秒字符串时间戳转为整型时间戳,如下所示:

public static void main(String[] args) {//毫秒时间戳格式String timeStamp = "1658635894000";//parse成长整型long timeStampLong = Long.parseLong(timeStamp);//要转成后的时间格式SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 时间戳转换成时间System.out.println(sdf.format(new Date(timeStampLong)));}

再次输出,如图所示:

由此可以看出,报出java.lang.IllegalArgumentException这个问题,一般情况下,就是输入的参数不符合方法的解析规则。

所以,我们可以沿着这条路,继续分析Could not set property 'id' of 'class com.xxx.Manager' with value '1407257724219068417' 这个问题。

分析问题

于是去排查managerMapper.xml文件的insert语句

 <insert id="insert" parameterType="com.xxx.Manager"><selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">SELECT LAST_INSERT_ID() AS id</selectKey>insert into manager (name, xxx, updateTime)values (#{name,jdbcType=VARCHAR},xxx, #{updateTime,jdbcType=TIMESTAMP})</insert>

由于是通过selectKey生成主键id的数值,此时,mybatis会在主键上生成其默认的uuid的值,比如上面的1407257724219068417,而manager的主键为int的类型且最大长度为11,如图所示:

解决问题

UUID的字符长度超出了id的字符长度,所以,报出了上面的的错误,只要在主键id上注明TableId即可,如下所示:

@TableId(type = IdType.AUTO)private Integer id;

当然IdType还有其他类型,我们来看看IdType的类型

描述
Auto 数据库自增
Input 自行输入
ID_Worker 分布式全局唯一ID 长整型类型
UUID 32位UUID字符串
NONE 无状态
ID_WORKER_STR 分布式全局唯一ID 字符串类型

日拱一卒,功不唐捐

记录mybatis添加表数据时报出的错误:Could not set property ‘id‘ of ‘class com.xxx.Manager with value ‘xx...xx‘相关推荐

  1. mfc中在vector里添加控件类型的数据时出现C2248错误

    @mfc中在vector里添加控件类型的数据时出现C2248错误 这是我在.h文件中定义的2个容器 public:vector<CComboBox*> cbx;vector <CSt ...

  2. 检查已终止。收集事实数据时检测到错误

    检查已终止.收集事实数据时检测到错误 数据类型 SQL2005 数据容量 470 MB 故障类型 服务器断电导致数据库系统表异常.消息 8921,级别 16,状态 1,第 1 行 检查已终止.收集事实 ...

  3. android获取错误原因,从http读取数据时发生OutOfMemory错误获取请求android

    我正在做一个http获取请求.我需要接收大量数据,但在读取数据时出现OutOfMemory异常.从http读取数据时发生OutOfMemory错误获取请求android 我的代码: public st ...

  4. mysql 1455_关于Oracle 11g导出数据时 报 ORA-1455错误的处理

    关于Oracle 11g导出数据时 报 ORA-1455错误的处理,由于导出的该用户的表可能存在空数据表,那么可能就会出现此其异常. 关于Oracle 11g导出数据时 报 ORA-1455错误的处理 ...

  5. android studio编程时出现的错误:Cannot get property 'XXXX' on extra properties extension as it does not exis

    android studio编程时出现的错误:Cannot get property 'XXXX' on extra properties extension as it does not exist ...

  6. 有外键约束的子表插入数据时出现的错误

    mysql-外键 父表:t_grade 子表:t_student 当在字表中插入数据时,必须有与其对应的父表记录,若父表中无对应的相关记录,则子表的数据插入失败 转载于:https://blog.51 ...

  7. Mybatis + Mysql 插入数据时中文乱码问题

    今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱码,一般有两种情况: 数据库本身设置 连接数据库时,jdbc的编码设置 对于第 ...

  8. 删除SQL表数据时存在约束的解决方法

    这几天在做项目时,清除库中的数据,但是各表之间都存在约束关系,无法使用 ' truncate table 表名 '语句进行操作,通过查询资料,找到了解决方法,当表之间存在约束关联时,想要执行trunc ...

  9. 批量插入数据表数据时,主键冲突的解决

    2.使用普通的insert into on conflict合并写入,存在写入放大思路: 大量数据,批量插入到数据表中时,很容易造成主键冲突,重复数据有唯一约束插入不进去表中,报错的问题出现. 排查错 ...

最新文章

  1. 8、Python与设计模式--门面模式
  2. 山东省各2021高考成绩查询,关于2021年山东省高考成绩查询系统入口【官网】
  3. html放缩都让内容处于正中间
  4. C#开发微信门户及应用(28)--微信“摇一摇·周边”功能的使用和接口的实现
  5. python发邮件和网络的简单使用
  6. 2016年3月-7月电机组装以及基于MAXON运动控制系统
  7. win7系统mysql连接不上数据库吗_Win7系统使用数据库时mysql频繁掉线无法连接的两种解决方法...
  8. Openfiler---开源存储管理平台
  9. “对不起,我们只招有出色背景的技术人员!”
  10. android 渐变展示启动屏
  11. Linux开放端口、关闭防火墙操作
  12. 4 读写文件_WEB安全之SQL注入(4)——读写文件
  13. Linux系统kill端口占用简书,MAC/Linux解决端口占用
  14. 简单了解TransE
  15. 战地一自定义服务器怎么搜索,战地1怎么快速加入服务器?多种加入方法一览...
  16. BTC投资者损失预计达73亿美元 “割肉式”抛售来袭?加密寒冬比预期更冷、更长
  17. 2021-07-04——在线考试系统设计
  18. win7如何隐藏所有微软服务器,如何隐藏Win7登录界面的administrator用户名
  19. python 爬虫http2
  20. 1.口袋西游人物属性(01)

热门文章

  1. 【国产加密算法-java实现SM3】
  2. Python面向对象实现图书管理系统
  3. windows10突然连不上打印机问题
  4. 无人直播慢直播设备介绍
  5. flutter permission动态权限申请以及IOS端权限问题审核被拒处理
  6. mpvue,koa开发微信小程序(二)网络请求相关
  7. 计算机系统配置有哪些东西吗,老司机教你组装电脑主要配置有哪些
  8. 【JavaWeb】Cookie的基本使用、原理分析、使用细节
  9. python自动化(六)持续集成:1.docker技术讲解
  10. qt找不到打印机_Qt之打印机总结