Web/Spring

[JPA] Hibernate Detached entity passed to persist 오류

HYJJ 2022. 3. 22. 20:18

자바 ORM 표준 JPA 프로그래밍을 참고함.

 

JPA로 Member와 Product의 객체 entity를 생성하였다.

하나의 회원이 여러 개의 물품을 주문하고, 

한 물품이 여러 회원에 의해 주문될 수 있으니 Member와 Product의 관계는 다대다(N:N)이다.

 

실제적으로 N:N 매핑을 하는 것이 불가능하기 때문에 중간에 member_product 테이블을 생성하여 

1:N, N:1 관계를 생성한다.

ERD를 활용해서 설명하자면 다음과 같다. 

Many-to-Many 관계

 

먼저 Product 객체 product1를 생성하여 저장 후, Member 객체에 생성한 product1을 add() 했더니 다음과 같은 결과가 나타났다.

잠깐 읽어보기로는 Hibernate 결과의 오류 같았다.

더 검색을 해본 결과 원인은 id를 자동생성할 때 나타난 듯 하다. GeneratedValue했는데 id를 직접 생성 한 후 persist()를 하였기 때문에 나타난 문제였다.  

 

Member 엔티티에 있는 GeneratedValue 어노테이션을 찾아 제거하였다.

 

그 후 실행해보니 오류 없이 실행 되는 것을 확인할 수 있었다. 

member_product 테이블에서도 PK, FK가 잘 설정된 것을 확인할 수 있었다.