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를 활용해서 설명하자면 다음과 같다.
먼저 Product 객체 product1를 생성하여 저장 후, Member 객체에 생성한 product1을 add() 했더니 다음과 같은 결과가 나타났다.
잠깐 읽어보기로는 Hibernate 결과의 오류 같았다.
더 검색을 해본 결과 원인은 id를 자동생성할 때 나타난 듯 하다. GeneratedValue했는데 id를 직접 생성 한 후 persist()를 하였기 때문에 나타난 문제였다.
Member 엔티티에 있는 GeneratedValue 어노테이션을 찾아 제거하였다.
그 후 실행해보니 오류 없이 실행 되는 것을 확인할 수 있었다.
member_product 테이블에서도 PK, FK가 잘 설정된 것을 확인할 수 있었다.