강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của econovation20173022
econovation20173022

câu hỏi đã được viết

Dữ liệu mùa xuân JPA

Lập trình JPA 4. Ánh xạ quan hệ

양방향 관계 설정 무한루프 질문드립니다

Viết

·

535

0

강의 해주신 내용을 참고하여 두개의 Entity (Question, Answer)에 관계맵핑을 해주었습니다.

@ManyToOne
private Question question;

@OneToMany(mappedBy = "question")
private List answers = new ArrayList();

public void addAnswer(Answer answer) {
this.getAnswers().add(answer);
answer.setQuestion(this);
}

그리고 Answer를 return값에 넣어서 json값으로 사용하려고 했는데요,

Answer->Question->Answer...이렇게 json값이 무한루프를 돌아버리네요

어떤 부분에서 그렇게 되는건지 알려주시면 감사하겠습니다

springjavaJPA

Câu trả lời 2

0

whiteship님의 프로필 이미지
whiteship
Người chia sẻ kiến thức

JSON으로 변환할 때 Question에서 answers 까지 JSON으로 만들려고 할꺼고, answers에 있는 각각의 question을 또 JSON으로 만들려고 할꺼고 그럼 또 그 안에 있는 answers를 다시 JSON으로 마들려고 할꺼고, 다시 그 answers에 있는 각각의 question을 또 JSON으로 만들려고 할꺼고 그럼 또 그 안에 있는 answers를 다시 JSON으로 마들려고 할꺼고, answers에 있는 각각의 question을 또 JSON으로 만들려고 할꺼고 그럼 또 그 안에 있는 answers를 다시 JSON으로 마들려고 할꺼고, answers에 있는 각각의 question을 또 JSON으로 만들려고 할꺼고 그럼 또 그 안에 있는 answers를 다시 JSON으로 마들려고 할꺼고,

answers에 있는 각각의 question을 또 JSON으로 만들려고 할꺼고 그럼 또 그 안에 있는 answers를 다시 JSON으로 마들려고 할꺼고..

아시겠나요?

그래서 보통 DTO를 만들어서 JSON으로 변환할 데이터만 정의해서 그 DTO를 가지고 JSON을 만듭니다. 그런데 이때도 또 DTO 안에다가 재귀적인 레퍼런스를 만들면 똑같은 일이 벌어지겠죠? 어떻게 하실지는 이제부터.. Android ECONOVATION님 고민하셔야 할 문제입니다.

A B가 서로 양방향에 1:N이고 DTO를 ADTO BDTO로 만들었지만 ADTO에는 List<BDTO>를 BDTO안에는 ADTO를 가지고있어서 결국 stackoverflowerror가 발생합니다. 엔티티를 그대로 반환할 경우에는 Json애노테이션으로 해결이 가능하지만, REST API에 엔티티를 그대로 노출하지 않으려고 DB레이어와 View레이어를 나누었더니 이 문제가 발생하였습니다. 어떻게 해결을 할 수 있을까요.... 부디 방향을 알려주세요....

0

econovation20173022님의 프로필 이미지
econovation20173022
Người đặt câu hỏi

추가 질문 드립니다.. 문제 찾아보니 dto를 사용하면 이와 같은 문제를 겪지 않는다고 하더라구요. 그부분도 이해가 잘 안됩니다

Hình ảnh hồ sơ của econovation20173022
econovation20173022

câu hỏi đã được viết

Đặt câu hỏi