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값이 읽히면서 무한참조가 일어난다.