[Error] detached entity passed to persist

개발개발·2021년 3월 23일
0

jpa에서 entity끼리 관계를 맺으면서 cascade, fetch, orphanRemoval 등의 옵션들을 사용했는데 잘 모르고 썼었다. 보통 cascade는 all을 주고 fetch는 lazy를 사용하면 문제없이 작동했기 때문이다.
자세하게 탐구할 시간도 없이 마감에 쫓기던 중 관련한 오류가 터졌고 cascade를 공부하게 되었다.

error : detached entity passed to persist;

오역가능성이 다분하지만 cascade 상태가 detached 된게 persist에 들어왔다. 이런 말인것 같다.

평소에 CascadeType.ALL이 문제가 된 것이다.

구글링 결과 jpa는 entity를 save하면 cascadeType이 detach로 바뀐다고 한다. 이미 jpa의 관리에서 벗어난 entity를 다시 jpa를 통해 사용하려고 해서 생긴 문제인듯 하다.

해결하기 위해서는 관계 맺어진 곳에서 cascadeType 을 detached나 다른 옵션으로 바꿔주면 해결된다.

또는 저장하고 받은 return값을 다시 entity에 덮어쓰기 하면 다시 persistance가 관리해준다.

추후 할일...
1. hibernate나 jpa가 어떤 원리로 구동되는지 더욱 알아봐야 겠다.

profile
청포도루이보스민트티

0개의 댓글