기술/오류 해결 기록

[Spring boot] Generating equals/hashCode implementation but without a call to superclass

yjkim_97 2023. 9. 26. 14:04

ℹ️ Development Environment

  • Spring boot v3.0.1
  • Gradle v7.6
  • Java v17
  • Lombok

 

🚫 현상

Spring boot gradle build시 아래 warning을 매 프로젝트마다 자주 만난다.

warning이기에 빌드시 문제는 없지만, 해소해주는 것이 좋다.

 

계속 까먹기 때문에 기록한다..

 

warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.

 

위 경고는 Lombok의 @Data 사용시 @EqualsAndHashCode(callSuper=false)을 추가하라는 내용이다.

 

@Data 어노테이션은 constructor, getter, setter, toString, equals, hashcode등의 method를 자동으로 생성한다.

이때 만들어진 equals와 hashcode method가 부모 클래스 필드까지 고려할지 안 할지를 @EqualsAndHashCode을 통해 설정할 수 있다.

callSuper=true 부모 클래스(super class) 필드 값까지 고려하겠다.
callSuper=false (default) 본인 클래스 필드 값만 고려하겠다.

 

 

🛠️ 해결 방안

@EqualsAndHashCode(callSuper = true) 어노테이션을 추가해주면 된다.

 

@Data
@EqualsAndHashCode(callSuper = true)
public class Comment extends BaseDomain
{
    ...
}