欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for……

程序员文章站 2022-07-15 13:05:26
...

在整合Spring和Mybatis时控制台报错了,错误如下:

Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.blog.dao.CategoryMapper.BaseResultMap

内容大概就是说CategoryMapper中有多个相同的ResultMap。

我就纳闷了,我用Mybatis逆工程插件的生成的文件,怎么会有错,于是我去看CategoryMapper.xml,结果----
不仅有2个相同的ResultMaps,甚至连增删改查的sql语句都各有2段一毛一样的……
什么鬼?这时,我突然想起在使用逆工程时我执行了2次,第一次失败了,然后修改后又执行了一次,就成功了。
我猜想这就是和数据库事务的原子性一致性一样,这逆工程是不讲究一致性(我猜的,不知道是不是,求指教),执行到一半时出错了,不会回滚,生成的那一半文件不会删除,等下次再重复执行时,就把相同的内容往之前成功生成的文件里追加,于是一个文件里就有2份一样的数据……
解决方法:
找到对应的mapper文件,将重复的内容删除即可!