JPA 에러: save the transient instance before flushing
2022. 6. 7. 00:21ㆍERROR
개인 프로젝트의 테스트 코드에서 위와 같은 에러가 발생했다.
오브젝트가 저장되지 않은 인스턴스를 참조하고 있다는 메시지로 보인다.
검색 결과 FK 로 사용되는 컬럼에 값이 없는 상태에서 데이터를 넣으려다 발생한 에러인 듯 싶다.
예를 들어 멤버(id, name, team_id), 팀(id, name)의 테이블에서 팀의 데이터가 없는 채로 멤버의 데이터를 넣으려고 하면 위의 에러가 발생한다는 뜻이다.
이 경우 멤버를 영속상태로 만들때 팀도 자동으로 영속화해주는 Cascade 옵션을 사용해 해결이 가능하다.
상품(Item) 1 : N ItemCategory N : 1 카테고리(Category) 의 테이블에서
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinColumn(name = "ITEM_ID")
private Item item;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinColumn(name = "CATEGORY_ID")
private Category category;
영속성전이로 해결했다.
'ERROR' 카테고리의 다른 글
Error injecting constructor, java.lang.NoSuchMethodError와 spring-boot-maven-plugin not found (0) | 2022.10.31 |
---|---|
MySQL WorkBench: could not acquire management access for administration (0) | 2022.07.13 |
No entity found for query 에러 (0) | 2022.06.01 |
@PostConstruct와 no EntityManager (0) | 2022.05.31 |
Could not autowire. No beans of 'EntityManager' type found. (0) | 2022.05.30 |