티스토리 뷰
예제 프로젝트에서 양방향 연관관계 연습하다가 자주 만났던 에러,, ToString StackOverFlow,,
toString 을 잘 살펴봤어야 했다..!
에러 발생 상황
- 양방향 관계를 가지는 Team 과 Member을 설계했음
- 양방향으로 설정한 이유 : Team 에서도 Member 을 조회하고 Member에서도 Team 을 조회하는 기능이 필요할 수 있기 때문
- Team 과 Member 엔티티는 다음과 같다
@Entity
data class Member(
@Id val id: String,
@ManyToOne
var team: Team
) {
override fun toString(): String {
return "Member(id='$id', name='$name', email='$email', phone='$phone',
photoUrl='$photoUrl', team=$team)"
}
}
@Entity
data class Team(
val teamName: String,
@OneToMany(mappedBy = "team", fetch = FetchType.EAGER)
val memberList: MutableList<Member> = mutableListOf()
) {
override fun toString(): String {
return "Team(teamName='$teamName', memberList=$memberList)"
}
}
team 의 toString 을 살펴보자,,
team 의 toString memberList 를 출력하고 member 는 team 을 출력해서,, 계속해서 서로를 호출해서 stack overflow 가 발생함.
아래와 같은 테스트 코드를 돌려봤는데 toString 오버플로우가 발생함
@Test
@Transactional
fun OneToManyTest() {
println(teamRepository.findById(1L).get())
}
해결 방법
TeamEntity . . 의. . 에러난 부분을 없애자 ㅋ toString 을 오버라이딩할 때 모든 변수를 출력하도록 해서 생긴 에러였음.
Team의 toString 에서 memberList를 출력하지 않도록, , 정말 어이없는, , ㅠ
아 그리고 만약 toString 을 오버라이딩 하지 않아서도 해당 에러가 발생할 수 있음. 그래서 toString 을 오버라이딩 해서 연관관계를 갖는 필드를 출력하는 부분을 삭제해줘야함
override fun toString(): String {
return "Team(teamName='$teamName')"
}
'1일 1삽질' 카테고리의 다른 글
Kotlin 에서 RequestDto 에 @Valid 적용하기 (0) | 2022.08.07 |
---|---|
JPAN+1 예제 (0) | 2022.07.24 |
[JUnit5] unsatisfied dependency mockmvc (0) | 2022.06.30 |
[Spring] CommandAcceptanceException 에러 (0) | 2022.05.31 |
[AWS] 1일 1삽질 : EC2에 SSH로 접속시 time out 해결 방법 (0) | 2021.12.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 운영체제
- 기술면접
- 트랜잭션격리성
- db
- Travis CI
- 파일업로드설정
- JPA
- ddl-auto
- ORA-27125
- 람다식
- OS
- spring
- AWS
- 네이버클라우드
- Java
- SpringSecurity
- level0
- Oracle
- EC2
- ci/cd
- SpringGraphQL
- TCP
- 트랜잭션
- CodeDeploy
- N+1
- nginx
- Til
- graphql
- 인덱스
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
글 보관함