back/Error log

[Spring] JPA save() 했을 때 DB에 null값이 저장될 때 해결방법

Min_dev 2022. 11. 18. 15:35
반응형

 

 

메인 프로젝트 진행중 JPA save() 메서드 호출 시 DB에 null값 들어가는 현상 발생함.

DB에 저장되어 있는 멤버 정보를 가져와서 Palettes에 MemberPalette 객체를 추가하였는데 null값이 저장되었다.

 

이상한건 멤버 정보를 저장했을 때 같은 코드로 Palettes에 MemberPalette 객체를 저장하였지만 이 때는 값이 잘 들어 갔다.

 

거의 만 이틀동안 삽질하면서 구글링은 해본 결과 JPA save() 사용할때 문제가 발생했다는걸 깨달았다.....ㅠㅠ

아직 공부가 부족해서 너무 심도있게 파고들지는 못하겠지만 save()메서드를 사용할때 영속성 전이가 하위 객체들까지 제대로 전이되지 않은 것 같다.

 

https://minkukjo.github.io/framework/2020/07/05/Spring-130/

 

Spring Data JPA - save()

Spring Data JPA

minkukjo.github.io

 

Member 객체가 save() 되면서 발생한 일이라 Member 엔티티에 들어가서 내가 지정한 CascadeType을 보니 PERSIST로 되어 있었다. 여기에 대해서도 구글링을 해보니 PERSIST 타입은 바로 하위 객체까지만 영속성이 전이가 된다고 나와있었다.

Member 엔티티

 

MemberPalette에 대한 속성 값들이 null값이 저장된 이유는 결국 MemberPalette의 속성값인 Member 객체와 MoodPalette까지 영속성 전이가 되지 않았기 때문인 것 같다.

MemberPalette 엔티티

그래서 MemberPalette의 cascade 타입을 All로 바꿔주어 하위 객체와 연관된 부분들까지 영속성 전이가 되도록 하였고

PostMan에서 테스트해본 결과!!!!!!!!!!!!!!!

 

새로 추가한 MemberPalette의 하위 속성들의 값이 제대로 들어왔다!

 

다른 팀원들이 트러블슈팅 했을 때 한번씩 소리지르는걸 봤는데 왜 소리를 지르는지 이제야 깨달았다..ㅠㅠㅠㅠ

 

나는 아직 개발 공부를 시작한지 얼마 되지 않아 많은 에러를 보지 못하였지만 이번만큼 오래 삽질했던 케이스가 없어서 해결했을때 더 짜릿했던 것 같다.

 

아직 JPA, DB,  스프링에 대한 이해가 부족해서 발생했던 단순한 에러였지만 좋은 경험이 되었다고 생각한다.

 

아직 공부가 부족해서 내용을 잘 적지는 못했지만, 나 같은 케이스가 또 있다면 꼭 이글을 보고 해결했으면 좋겠다 

반응형