<aside> ☝ 여기서 알게된 것
@Transactional
을 걸어줍니다.
</aside>[DB] detached entity passed to persist 에러 간단 해결하기
failed to lazily initialize a collection of role 오류 관련 문의 - 인프런 | 질문 & 답변
해당 에러는 중복 저장 시 발생되는 문제라고 한다. 나는 글 이 저장되거나 삭제되거나 수정되면 모든 연결 엔티티도 저장/삭제/수정되어야 된다고 생각했기 때문에 cascade type을 ALL로 지정하였다.
그런데 테스트 코드에서는 세 경우를 모두 저장했으니 저장이 3번씩 되어버린것. 이를 해결해보기로 했다.
일단 글만 저장하고, FieldsList가 제대로 조회되는지 확인해보았다.
저장은 Post만 하고, post에 있는 fieldsList를 불러와 조회를 해보니 fields가 잘 할당이 되었다.
중간에 불미스러운(?)문제를 일으켰는데, failed to lazliy initialize a collection of role 이라는 에러를 만났다.
이는 lazy로딩으로 불러들여온 객체가 초기화가 되지 않았다는 뜻인데, 아무리 초기화를 시켜도 로딩이 안되는 것이었다. 그래서 구글링을 좀 해보니, 세상에 킹영한 선생님께서 답변을 남겨주셨다. (신뢰 10000)
정리하자면 다음과 같다.
⇒ 실제로, 이 문제는 test class에 @Transactional
을 걸어줌으로써 해결이 되었다.