idea和eclipse生成实体类的get/set方法不一致引发的血案

       记录一下今天工作中遇到的一个问题,刚好好久没写博客了,今天就写一篇。

是这样的,今天我在开发过程中,原是将另外一个项目中的功能模块迁入到新项目中,这个功能在之前那个项目中是有用的,然而将其迁到新项目后,Dao层的update功能不能成功修改数据。这个Dao层的一些方法都是我们公司自己封装的,我们只要继承BaseDao就行了,在出现修改不成功现象之后,我以为是这个BaseDao的原始方法有问题,因为在之前的项目中是没有问题的,现在只不过是两个项目中的持久层框架不一样,所以我就去debug跟代码,发现其实这个东西是能用的,但是在循环遍历输入实体类的所有字段后就没有日志了。我就很纳闷,这到底是怎么一回事呢,这么简单的一个代码段,怎么就跑不通呢。后来我找旁边的同事,看看他的此类update功能行不行,结果他说他的是可以的,然后我就更纳闷了。交流了一下,发现我俩的代码块的逻辑是一样的,为什么他的就可以。我叫他过来看一下,然后他确认了我的和他的是一样的,就也觉得奇怪,叫我自己去debug看看怎么回事。然后我琢磨了好久,去把所有的代码重新审查看一遍,发现没问题,然后把pojo实体类的get/set方法删除掉,重新用eclipse的快捷键生成了一遍,然后重新试了一下,莫名其妙的就好了,刚刚的update数据成功了。我就觉得那应该是pojo这里除了什么问题,定位到问题位置后,我就去一个一个排查新生成的get/set方法和原先的有什么不一样,最后发现确实有两个不一样的,就是boolean类型的属性的get方法不一样,之前的是isAutoPay(),现在的是getAutoPay(),我这才想起来可能是这里的问题,就是这里坏事了。然后想了一下为什么两个会不一样,原来这个pojo实体类是之前的同事写的,但是他用的开发工具是idea,而我们用的是eclipse,我又去查证了一下,去试了一下在idea下生成的get/set方法是怎样的,发现确实是这样,如果属性的类型是boolean的,那生成的get方法的名称就是isXXX(),这和eclipse不一样,所以导致出错。

1、

idea的get方法格式

2

eclipse的get方法格式

3、       最后总结得到一个结论,就是同一个项目组,开发同一个项目,必须要严格统一开发环境,要么都用idea,要么都用eclipse,绝对不能混着用,不然就可能出现问题还莫名其妙,就像上面我遇到的那样。

猜你喜欢

转载自blog.csdn.net/qq_35860138/article/details/82591724