lombok是一个非常简约优雅的工具,但是偶尔会出现一些要注意的地方。
@Data中包含了@EqualsAndHashCode注解,这个注解是根据全部属性去给对象生成一个hashcode。
大多数情况都挺方便的,开发人员也不需要了解太多细节。对象的关联往往也只是父对象中包含子对象。
但是当想要在子对象中设置一个父对象的反向的属性时。调用contains、dinstinct之类的方法就会出现堆栈溢出问题——因为hashcode方法循环的去找子对象跟父对象。
废话不多。直接说解决办法吧!
那就是在子对象中的反向属性上面,加上排除注解@EqualsAndHashCode.Exclude
@Data
public class Father{
Child child;
}
@Data
public class Child{
@EqualsAndHashCode.Exclude
Father father;
}