ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • 가상 스레드
  • AccessDecisionVoter 커스텀
  • LocalDateTime
  • 트랜잭션
  • 구조화된 동시성
  • scope value
  • UserDetailsService
  • 동등성
  • nginx basic auth
  • restdocs custom
  • 가상 스레드 예외 핸들링
  • tree
  • 동시성 제어
  • AuthenticationException
  • 인가(Authorization) 처리
  • restdocs enum
  • AccessDecisionManager
  • java
  • querydsl
  • VirtualThread Springboot
  • StructuredConcorrency
  • node exporter basic auth
  • DataJpaTest
  • FilterSecurityInterceptor
  • 정규표현식
  • nGrinder
  • mysql
  • 동일성
  • junit5
  • jpa

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

Issue

TransientPropertyValueException: object references an unsaved transient instance 에러

2023. 1. 19. 00:06

TransientPropertyValueException: object references an unsaved transient instance 에러

org.hibernate.TransientPropertyValueException: 
object references an unsaved transient instance - save the transient instance before flushing : 

연관관계가 있는 엔티티끼리 영속성을 관리할때(영속성 전이) 생기는 오류이다.

FK로 지정하는 엔티티가 아직 영속상태(Persist) 가 되지 않거나, 부모객체에서 자식객체를 한번에 저장하려고할때 발생한다.

해결

영속성 전이를 위해 cascade type을 지정한다.

@OneToMany, @ManyToOne 어노테이션이 존재하는 연관관계의 join하는쪽(연관관계의 주인)에 cascade를 설정.

cascade = CascadeType.ALL 또는 cascade = CascadeType.PERSIST

  • CascadeType.PERSIST
    • 엔티티를 생성하고, 연관 엔티티를 추가한 상태로 영속화할 때 연관 엔티티도 함께 psersist()가 수행된다.
  • CascadeType.MERGE
    • 트랜잭션이 종료되고 detach상태에서 연관 엔티티를 추가하거나 변경된 이후에 부모 엔티티가 merge를 수행하게 되면 변경사항이 연관 엔티티에도 적영된다.
  • CascadeType.REFRESH
    • 엔티티를 새로고칠 때, 이 필드에 보유된 엔티티도 새로고친다.
  • CascadeType.REMOVE
    • 엔티티를 삭제할 때, 이 필드에 보유된 엔티티도 삭제한다.
  • CascadeType.DETACH
    • 부모 엔티티가 detach()를 수행하게 되면, 연관된 엔티티도 detach() 상태가 되어 변경사항이 반영되지 않는다.
  • CascadeType.ALL
    • 모든 Cascade 적용
@Entity
public class Parent {

  @Id
  private Long id; 
  ...
}

@Entity
public class Child {
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "parent_id")
    private Parent parent;
}
저작자표시 비영리 (새창열림)

'Issue' 카테고리의 다른 글

동시 삭제 요청 ObjectOptimisticLockingFailureException  (1) 2023.05.11
Controller + JPA, JUnit Slice Test Error [JPA metamodel must not be empty! 해결]  (0) 2022.12.12
AuthenticationPrincipal Null - 주입받지 못하는 이슈  (0) 2022.11.24
    'Issue' 카테고리의 다른 글
    • 동시 삭제 요청 ObjectOptimisticLockingFailureException
    • Controller + JPA, JUnit Slice Test Error [JPA metamodel must not be empty! 해결]
    • AuthenticationPrincipal Null - 주입받지 못하는 이슈
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바