JPA 사용 시 fetchType이 LAZY로 지정된 엔티티의 equals 메소드가 의도한대로 동작하지 않는 문제가 발생했습니다.
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass())
// ...
}
위의 equals 메소드는 IDE의 자동 완성 기능을 통해 구현했는데, getClass가 아니라 아래와 같이 instanceOf를 이용해 비교해야 정상적으로 동작합니다.
public boolean equals(Object o) {
if (!(o instanceof B)) {
// ...
}
추가로 해당 프록시 객체의 값을 꺼내는 부분 또한 getter를 사용하도록 변경해야 값을 정상적으로 받아올 수 있습니다.