Spring/JPA + Security

[Spring Data JPA] 좋아요 구현하기 번외 무한참조 오류 잡기

pyogowoon 2023. 1. 13. 15:12
public class Likes { // N

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;


    @JoinColumn(name="imageId")
    @ManyToOne
    private Image image; //1

    @JsonIgnoreProperties({"images"})
    @JoinColumn(name="userId")
    @ManyToOne
    private User user;

   private LocalDateTime createDate;

    @PrePersist  // DB에 INSERT 되기 직전에 실행
    public void createDate(){
        this.createDate = LocalDateTime.now();
    }
}

 user의 "images"를 JsonIgnoreProperties 처리 해줘야 한다.

이렇게 해야 무한참조를 방지한다. 그동안 잘 됐던 이유는

 

ssar과 코스 각각 좋아요를 한 상태라면

 

likes를 select 하는 과정에서 cos가 한번 더 ssar의 게시글에 좋아요를 누른다면 한번 더 탐색되기 때문에(다른 아이디 정보, 그러니까 ssar정보만 아니고 cos정보) 읽었고

 

User의 images 엔 이그노어가 안걸려있어서 에러가 발생했던 것

 

 

 

지금은 각각 좋아요 한 상태이기때문에 like값이 읽히면서 무한참조가 일어난다.