官方文档:@EqualsAndHashCode

原文中提到的大致有以下几点: 
1. 此注解会生成equals(Object other) 和 hashCode()方法。 
2. 它默认使用非静态,非瞬态的属性 
3. 可通过参数exclude排除一些属性 
4. 可通过参数of指定仅使用哪些属性 
5. 它默认仅使用该类中定义的属性且不调用父类的方法 
6. 可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法。

另:@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。

通过官方文档,可以得知,当使用@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和 hashCode()方法,且不会使用父类的属性,这就导致了可能的问题。 
比如,有多个类有相同的部分属性,把它们定义到父类中,恰好id(数据库主键)也在父类中,那么就会存在部分对象在比较时,它们并不相等,却因为lombok自动生成的equals(Object other) 和 hashCode()方法判定为相等,从而导致出错。

修复此问题的方法很简单: 
1. 使用@Getter @Setter @ToString代替@Data并且自定义equals(Object other) 和 hashCode()方法,比如有些类只需要判断主键id是否相等即足矣。 
2. 或者使用在使用@Data时同时加上@EqualsAndHashCode(callSuper=true)注解。
--------------------- 
作者:三目君 
来源:CSDN 
原文:https://blog.csdn.net/zhanlanmg/article/details/50392266 
版权声明:本文为博主原创文章,转载请附上博文链接!

lombok @EqualsAndHashCode 注解的影响相关推荐

  1. Lombok的注解简单介绍

    Lombok的注解简单介绍 背景   我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器.getter.setter.equals.hashcode.toStri ...

  2. 20190905 Lombok常用注解

    Lombok常用注解 val 用于声明类型,将从初始化表达式推断出类型,仅适用于局部变量和foreach循环,而不适用于字段.声明的局部变量为final变量. Java自带类型推断随着JDK版本提升越 ...

  3. springboot依赖lombok插件、lombok常用注解

    --springboot依赖lombok插件.lombok常用注解 1 lombok插件 1.1 lombok插件简介 官方介绍如下: 意思是:lombok是一个能自动插入到编辑器和构建工具的java ...

  4. java lombok.getter_Lombok注解@Getter @Setter详解

    1.为什么强大 ​项目中经常使用bean,entity等类,绝大部分数据类类中都需要get.set.toString.equals和hashCode方法,尽管IDE工具都会帮我们生成.但自动生成这些代 ...

  5. 来自lombok的注解(解决idea中的找不到get,set方法,找不到log的问题)

    来自lombok的注解(解决idea中的找不到get,set方法,找不到log的问题) 参考文章: (1)来自lombok的注解(解决idea中的找不到get,set方法,找不到log的问题) (2) ...

  6. lombok 基础注解之 @Builder

    最全的 lombok 注解详情(随着版本不定时更新) 一.注解介绍 @Builder 注解为类生成相对略微复杂的构建器 API 它作用于类,将其变成建造者模式 可以以链的形式调用 初始化实例对象生成的 ...

  7. lombok 基础注解之 @EqualsAndHashCode

    最全的 lombok 注解详情(随着版本不定时更新) 一.注解介绍 作用于类,覆盖默认的 equals 和 hashCode 二.属性介绍 exclude:通过该属性可以排除某些字段 of:通过该属性 ...

  8. lombok常用注解大全

    lombok可以帮助我们提升日常开发的效率jar包.里面有许多实用的注解. 本文将对lombok的常用注解作使用介绍,对于一些实验性官方不推荐的注解只会简单介绍 实验性注解可能会带来一些风险. 注: ...

  9. lombok @Builder注解的使用

    @Builder ......鲍勃是你的叔叔:用于创建对象的无懈可击的花式裤子! @Builder 在lombok v0.12.0中作为实验特征介绍. @Builder获得了@Singular支持,并 ...

最新文章

  1. 004_常用词汇句子翻译记录
  2. VSC 1.0 (netapp存储在vSphere vCenter 4上的插件)
  3. 高通加大5G应用力度:发布又一款手机芯片,还推出机器人和无人机5G系统
  4. Ajax中POST和GET的区别
  5. 暑假集训-8.06总结
  6. 前端学习(1915)vue之电商管理系统电商系统之通过路由展现权限列表
  7. 32命令模式(Command Pattern)
  8. LeetCode 431. 将 N 叉树编码为二叉树(递归/层序)
  9. 回想四叉树LOD地形(上)
  10. 4. 怎么在生活中提升专注力?
  11. 使用tp5.1写api接口的流程
  12. uwp - 控件精确移动动画
  13. 数据仓库与数据挖掘实践期末复习总结
  14. laxTex 手写体
  15. 如何关闭搜狗输入法软键盘的热键
  16. cad解除块的快捷命令_cad隐藏块快捷键是什么,Auto CAD隐藏块快捷键是什么?
  17. 想成为游戏原画师需要哪些系统的学习?
  18. 股票python量化交易002-常见量化指标(基本面)
  19. 我的小画板(Appinventor练习)
  20. KSO - sqlserver事务实现

热门文章

  1. salt上编写了备份日志的脚本
  2. 从一道面试题,到“我可能看了假源码[2]
  3. nginx反向代理tomcat提示failed (13: Permission denied) while connecting to upstream
  4. 用友为什么要进军PLM市场
  5. Visual Studio 2005 Beta 2 will ship on April 25th
  6. FLV提取AAC音频单独播放并实现可视化的频谱
  7. win32下进程间通信方式之管道、邮件槽、剪切板、共享内存、消息、套接字、RPC、DDE等
  8. 数字图像处理实验(12):PROJECT 05-03,Periodic Noise Reduction Using a Notch Filter
  9. 利用RxJava加载图片
  10. oracle rac添加监听,【学习笔记】Oracle 10G RAC增加节点时手动注册监听服务的案例步骤...