반응형
SQL Error: 23503 에러가 발생했다.
이 에러는 무엇인지 모르겠어서 현재 QNA에 글을 남겨둔 상태이다.
https://www.inflearn.com/questions/213911
(21.05.17 추가)
CascadeType.ALL, orphanRemoval=false 로 설정해두다보니,
parent의 자식 목록에서 child1은 지웠지만, 데이터베이스에서 child1은 남아있는 상태이다.
그리고 parent 엔티티는 하나의 자식 엔티티(child2)만 가지게 될 것이다.
여기까진 예측이 될 것이다.
그러나 그 이후 parent를 지울 때,
cascade로 parent 뿐만 아니라 children을 모조리 지워야하는데,
이 때 자식 엔티티들의 정보를 지울 때, 부모 입장에서 child1은 지웠지만 child1 입장에서의 부모는 parent로 연결돼있기 때문에 SQL Error 23503이 발생한 것이다.
따라서 연관관계를 끊을 때 자식을 지우고 싶다면 그냥 orphanRemoval=true로 해놓자. (단, 단일참조 및 단일소유자일 때만 사용하도록!)
반응형
'JAVA > JPA 학습기록' 카테고리의 다른 글
[JPA] JPA에서 SQL 쿼리를 작성하는 방법_ JPQL (0) | 2021.06.09 |
---|---|
[JPA] 값 타입 컬렉션, 임베디드 타입 (0) | 2021.05.26 |
[JPA] 실전예제 5_ 영속성 전이(Cascade), 고아 객체(orphanRemoval=true) 적용 (0) | 2021.05.15 |
[JPA] 실전예제 5_지연로딩(FetchType.lazy) 적용 (0) | 2021.05.15 |
[JPA] 1:N 연관관계 매핑, N:1 연관관계 매핑 (0) | 2021.04.24 |