-
PersistentObjectException: detached entity passed to persist에러 일기 2023. 2. 1. 03:50
엔티티 종속에 관한 에러였다.
public class Order { @Id @GeneratedValue private Long id; private OrderStatus status; @ManyToOne(fetch = LAZY) @JoinColumn(name = "member_id") private Member member; @OneToOne(cascade = CascadeType.ALL, fetch = LAZY) @JoinColumn(name = "delivery_id") private Delivery delivery; @OneToMany(mappedBy = "order") private List<OrderItem> orderItemList = new ArrayList<>(); ... }
public class Delivery { @Id @GeneratedValue private Long id; private DeliveryStatus status; @Embedded private Address address; @OneToOne(mappedBy = "delivery", fetch = LAZY) private Order order; ... }
Order와 Delivery가 @OneToOne으로 연관되어있는 상태이다.
new Order를 하며 this.delivery = delivery를 하게되었을 때 이 에러가 발생했다.
이유는 Order에서 cascade = CascadeType.All 을 해놨기 때문에 강한 결합이 필요한 것이다.
강한 결합을 해주기 위해선 delivery 쪽에서 order를 지정해줘야 한다.
this.delivery = delivery delivery.setOrder(this)
이렇게 양쪽에 서로를 전달하여 저장시켜주면 해결된다.
'에러 일기' 카테고리의 다른 글