일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- programmers
- 코딩봉사
- 알고리즘
- SW봉사
- 프로그래머스
- 백준 알고리즘
- C++
- 백준알고리즘
- 소프티어
- CJ UNIT
- kotlin
- BFS
- 데이터베이스
- 코딩교육봉사
- MYSQL
- softeer
- 회고
- python
- SQL
- 1과목
- 백준
- 코틀린
- 공부일지
- 파이썬
- 자바
- 정보처리산업기사
- 스프링
- java
- 문제풀이
- 시나공
Archives
- Today
- Total
JIE0025
[JPA] object references an unsaved transient instance - save the transient instance before flushing 본문
개발/이슈, 트러블슈팅
[JPA] object references an unsaved transient instance - save the transient instance before flushing
Kangjieun11 2022. 12. 30. 18:25728x90
object references an unsaved transient instance - save the transient instance before flushing
연관되어 있는 두엔티티가 존재하는데, save()하는 과정에서 오류가 발생한다.
오류메세지를 해석해보면
'개체가 저장되지 않은 임시 인스턴스를 참조합니다. - 플러시(영속화)하기 전에 임시 인스턴스를 저장합니다.'
즉 어떤 객체가 영속화 될 때, 연관된 객체도 영속화 해주는 코드가 필요하다
✅ 영속성 전이를 사용한 해결
연관관계를 맺어주고, 영속성 전이를 사용해야
객체에 사용되는 행동이 그 관계를 맺어준 객체한테까지 전파되게 해야한다.
특정 엔티티에 대해 특정한 작업을 수행하면 관련된 엔티티에도 동일한 작업을 수행한다
JPA에서는 연관된 엔티티간의 의존성을 설정하기 위해 ENUM 타입의 javax.persistence.CascadeType를 제공하고 있다.
- CascadeType.ALL: 모든 Cascade를 적용
- CascadeType.PERSIST: 엔티티를 영속화할 때, 연관된 엔티티도 함께 유지
- CascadeType.MERGE: 엔티티 상태를 병합(Merge)할 때, 연관된 엔티티도 모두 병합
- CascadeType.REMOVE: 엔티티를 제거할 때, 연관된 엔티티도 모두 제거
- CascadeType.DETACH: 부모 엔티티를 detach() 수행하면, 연관 엔티티도 detach()상태가 되어 변경 사항 반영 X
- CascadeType.REFRESH: 상위 엔티티를 새로고침(Refresh)할 때, 연관된 엔티티도 모두 새로고침
지금은 영속화할 때 영속화가 함께 되는 코드가 필요하므로 cascade = CascadeType.PERSIST를 사용하면 된다.
(이전)
@OneToOne
@JoinColumn(name = "STAMP_ID")
private Stamp stamp;
(이후)
@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "STAMP_ID")
private Stamp stamp;
'개발 > 이슈, 트러블슈팅' 카테고리의 다른 글
[의문] refresh token도 결국 JWT인데 왜 "Bearer"을 안쓰는걸까? (0) | 2023.02.26 |
---|---|
통합테스트에서 데이터베이스 이슈 : 각각은 잘 동작하지만 전체 동작시 실패 (0) | 2023.01.07 |
Querydsl "No sources given; nested exception is java.lang.IllegalArgumentException: No sources given (0) | 2022.12.22 |
[HTTP] 405 Method Not Allowed (0) | 2022.12.17 |
[error] javax.servlet.ServletException: No adapter for handler SpringBoot (0) | 2022.12.17 |