Problem.
JPA @ManyToMany Entity에 Save 처리 중 아래와 같은 오류 발생
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing:
Solution
맵핑 어노테이션에 cascade=CascadeType.ALL 추가
@ManyToMany(cascade=CascadeType.ALL)
cascade 참고
CascadeType의 종류에는 다음과 같은 것들이 있다.
CascadeType.RESIST
– 엔티티를 생성하고, 연관 엔티티를 추가하였을 때 persist() 를 수행하면 연관 엔티티도 함께 persist()가 수행된다. 만약 연관 엔티티가 DB에 등록된 키값을 가지고 있다면 detached entity passed to persist Exception이 발생한다.
CascadeType.MERGE
– 트랜잭션이 종료되고 detach 상태에서 연관 엔티티를 추가하거나 변경된 이후에 부모 엔티티가 merge()를 수행하게 되면 변경사항이 적용된다.(연관 엔티티의 추가 및 수정 모두 반영됨)
CascadeType.REMOVE
– 삭제 시 연관된 엔티티도 같이 삭제됨
CascadeType.DETACH
– 부모 엔티티가 detach()를 수행하게 되면, 연관된 엔티티도 detach() 상태가 되어 변경사항이 반영되지 않는다.
CascadeType.ALL
– 모든 Cascade 적용
출처 : http://chomman.github.io/blog/java/jpa/programming/jpa-cascadetype-%EC%A2%85%EB%A5%98/
'Programming > JPA' 카테고리의 다른 글
[JPA] 원하는 내용만 가져오기 (3) | 2019.03.26 |
---|---|
[JPA] manytoone n+1 문제? (0) | 2019.03.20 |
[Error] Parameter value [2017/08/22] did not match expected type [java.util.Date (n/a)] (0) | 2017.08.23 |
[JPA/error] Could not write JSON: No default constructor for entity: (0) | 2017.06.15 |