当前位置: 首页 > news >正文

解决SpringBoot在使用AOP切片时DATE类型出现Argument is not assignable to ‘lombok.Data‘ 的问题

场景:在使用aop切片时,里面的自动赋值给updateTime的时候报错 

(ps:学习AOP相关知识请参考:SpringBoot的特性之一:AOP-CSDN博客)

以下是报错信息:

06-05 11:39:19 INFO  : <===== AutoInsert start =====>
06-05 11:39:19 INFO  : <===== AutoInsert Type:UPDATE =====>
06-05 11:39:19 ERROR : <===== AutoInsert error =====>
06-05 11:39:19 ERROR : 全局异常信息 ex=java.lang.NoSuchMethodException: com.ycg.vue.Entity.UserEntity.setUpdateTime(lombok.Data)
06-05 11:39:19 WARN  : Resolved [java.lang.RuntimeException: java.lang.NoSuchMethodException: com.ycg.vue.Entity.UserEntity.setUpdateTime(lombok.Data)]

以下是本人aop原代码片段:

case UPDATE: {log.info("<===== AutoInsert Type:UPDATE =====>");entity.getClass().getDeclaredMethod(AspectConstant.SET_UPDATE_BY, String.class).invoke(entity, ThreadLocalContext.getUserId());entity.getClass().getDeclaredMethod(AspectConstant.SET_UPDATE_TIME, Date.class).invoke(entity, now);break;
}

 报错和提示大概是说,无法映射到date这个类,查阅大量资料无果后开始一点点排查,先是去实体类中手写了一个set方法还是不行,然后就发现,反射的实体类字段的类型我写的是Date.class,我就想是不是因为有好几个Date类,所以不知道映射哪一个,然后我就把类改成了jdk的,也就是:java.util.Date.class。

case UPDATE: {log.info("<===== AutoInsert Type:UPDATE =====>");entity.getClass().getDeclaredMethod(AspectConstant.SET_UPDATE_BY, String.class).invoke(entity, ThreadLocalContext.getUserId());entity.getClass().getDeclaredMethod(AspectConstant.SET_UPDATE_TIME, java.util.Date.class).invoke(entity, now);break;
}

完美解决,其实这时候我才发现,没改之前把鼠标放上去还出现了Argument is not assignable to 'lombok.Data' 的提示,正好也跟上面吻合,我太爱(tao yan)反射了,看来还是不够细心,还需努力啊!

相关文章:

  • payable介绍, 编写一个转账的测试合约
  • 代码随想录【字符串】
  • 云化XR什么意思,Cloud XR是否有前景?
  • 详细分析Mysql中的JSON_OBJECT() 基本知识(附Demo)
  • 阅文集团CEO侯晓楠:建立10亿生态扶持基金,为好内容搭建舞台
  • LVS+KeepAlived高可用负载均衡集群
  • 网络编程(一)基本概念、TCP协议
  • vivado HW_SIO_RX
  • torch.squeeze() dim=1 dim=-1 dim=2
  • UML相关1
  • Docker 国内镜像源更换
  • [SWPUCTF 2022 新生赛]ez_1zpop(php反序列化之pop链构造)
  • MySQL之高级特性(三)
  • 道路堵塞监测识别摄像机
  • 推荐这两款AI工具,真的很好用
  • 【Amaple教程】5. 插件
  • DataBase in Android
  • es6要点
  • Javascript 原型链
  • KMP算法及优化
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 关于使用markdown的方法(引自CSDN教程)
  • 今年的LC3大会没了?
  • 近期前端发展计划
  • 聊聊flink的BlobWriter
  • 入门级的git使用指北
  • ​低代码平台的核心价值与优势
  • # 安徽锐锋科技IDMS系统简介
  • ## 1.3.Git命令
  • #HarmonyOS:基础语法
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (12)目标检测_SSD基于pytorch搭建代码
  • (23)Linux的软硬连接
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (NSDate) 时间 (time )比较
  • (二十六)Java 数据结构
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .cfg\.dat\.mak(持续补充)
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .Net 6.0--通用帮助类--FileHelper
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET MVC 验证码
  • .NET NPOI导出Excel详解
  • .net wcf memory gates checking failed
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET6 命令行启动及发布单个Exe文件
  • .net反混淆脱壳工具de4dot的使用
  • .NET正则基础之——正则委托
  • @PreAuthorize与@Secured注解的区别是什么?
  • @RequestParam,@RequestBody和@PathVariable 区别