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

Java ORM框架FastMybatis踩坑

Java ORM框架FastmyBatis踩坑

  • 问题:使用了FastmyBatis的saveOrUpdate方法,明明设置了主键的值且表中存在,但是依然执行insert操作。导致Duplicate PK。

  • 原因:使用了其他第三方包的注解指定表的主键,没有按照FastmyBatis本身指定主键的方式去做。

    所以执行saveOrUpdate方法时找不到主键,所以日志也看不到根据主键查数据是否存在的这条sql日志,只看到insert日志。修改完之后,saveOrUpdate方法无论是insert还是update之前都会先根据主键(默认)去查表,看看这条数据是否存在。

问题代码:

使用了第三方包@Id注解去指定主键

import com.gitee.fastmybatis.annotation.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.Id; //或者换成import org.springframework.data.annotation.Id;
import javax.persistence.Column;@Table(name = "xxxtable")
public class xxxEntity{@GeneratedValue(strategy = GenerationType.AUTO)@Id@Column(name = "xxx_id")private Long leadId;
}

解决方式

使用这个框架的指定主键和字段的方式是:

import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import com.gitee.fastmybatis.annotation.Column;@Table(name = "xxxtable", pk = @Pk(name = "xxx_id", strategy = PkStrategy.NONE))
public class xxxEntity{@Column(name = "xxx_id")private Long xxxId;
}

感悟

Java这些同名的第三方类真是太多了,一不小心选错的话,如果编译还通过了,运行时就可能导致意想不到的bug!

http://www.lryc.cn/news/393000.html

相关文章:

  • AI是在帮助开发者还是取代他们?
  • C. Theofanis‘ Nightmare
  • 加密货币大利好!9月降息概率突破70%!美国可能大幅降息或多次降息?
  • Dns被莫名篡改的逆向分析定位(笔记)
  • SpringBoot中整合ONLYOFFICE在线编辑
  • Python打字练习
  • Pytorch添加自定义算子之(10)-mmdeploy编译流程
  • 大数据面试题之Flink(4)
  • C#实战|账号管理系统:通用登录窗体的实现。
  • php简单商城小程序系统源码
  • NativeMemoryTracking查看java内存信息
  • 建智慧医院核心:智能导航系统的功能全析与实现效益
  • 数据库基础之:函数依赖
  • Newport太阳光模拟器MSOL-UV-X使用说明手侧
  • pandas读取CSV格式文件生成数据发生器iteration
  • SpringBoot 启动流程四
  • 实现桌面动态壁纸(二)
  • JavaEE——计算机工作原理
  • 并发、多线程和HTTP连接之间有什么关系?
  • 展开说说:Android服务之startService源码解析
  • Java + MySQL 实现存储完整 Json
  • 解决刚申请下来的AWS EC2,无法用finalshell连接的问题
  • 如何在PD虚拟机中开启系统的嵌套虚拟化功能?pd虚拟机怎么用 Parallels Desktop 19 for Mac
  • vue中实现button按钮的重复点击指令
  • 智能与伦理:Kimi与学术道德的和谐共舞
  • mac有什么解压软件 mac怎么解压7z软件 苹果电脑好用的压缩软件有哪些
  • C语言_练习题
  • Type-C接口快充取电技术的实现
  • 压测工具---Ultron
  • Kubernetes 负载均衡器解决方案 MetalLB实践