mybatis执行自带update方法遇到的坑

这篇具有很好参考价值的文章主要介绍了mybatis执行自带update方法遇到的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 背景

        项目上需要对已有oracle数据源进行兼容改造,兼容doris数据源。改造过程中发现,启动项目时有一个类内部执行updateByPrimaryKeySelective时异常。把日志打印出的SQL复制到doris数据库执行,提示的错误与项目内一致,说明错误是数据库级别的,而非项目内部问题。错误信息如下

SQL 错误 [1105] [HY000]: errCode = 2, detailMessage = Only value columns of unique table could be updated.

该错误在oracle中不会抛出,而导致这个错误的原因,是因为update语句中的set中包含了

id=id!!!

至于为什么doris不支持这种语法,或者甚至都不知道doris是什么东西的各位,去自己找找看吧,反正网上能搜到doris的东西少之又少。

2. 解决

        还是熟悉的配方,无非就是各种网上查找无果而已。能找到的都是关于MyBatis实体类主键需要增加@id注解,更新才不会无效、错误等这些文章。其实都没错,只是不适用于本人这次遇到的问题罢了。毕竟这次是跟doris这种用的人少之又少的数据库打交道,遇到各种奇怪的问题也不足为奇了。

        究其原因,是因为项目中引用了内部一个包,而包里用到了mapper-4.0.1.jar这个jar包进行更新操作。反正就是pom文件内的配置各种套娃,找不到正常版本的方法。解决方案就是想办法把错误的包排除,使用正确的就行了。正常的jar包是mapper-base-4.2.2.jar

看是否引用对的jar包,只需要在方法上按住CTRL键+鼠标左键进入引用内部就知道了(这不会还有人不知道吧)。

mybatis执行自带update方法遇到的坑,java,doris,mybatis

3. 吐槽

        Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库。通过这句话就能看出,doris数据库引用场景及特点其实是用于数据分析,当然也不是不能用于增删改操作,但限制颇多。对于一般的业务系统,需要频繁进行增删改操作的场景下并不适用。而且还不支持事务,还不如用mysql,甚至国产的达梦都行。

PS:

关于更多doris遇到的坑,请看

doris数据库操作数字遇到的问题_CS_草祭先生的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-708769.html

到了这里,关于mybatis执行自带update方法遇到的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包