프로젝트를 진행하던 중 @OneToMany 관계로 되어있는 엔티티가 List를 clear를 해도 자식 Entity가 삭제되지 않는 현상이 발생했음
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "p_orders")
public class Order extends BaseEntity {
@Id
@Column(name = "order_id")
private UUID orderId;
@Column(name = "user_name", nullable = false , length = 100)
private String userName;
@ManyToOne
@JoinColumn(name = "store_id")
private Store store;
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
private List<OrderProduct> orderProducts;
// @ManyToOne
// @JoinColumn(name = "dest_id")
@Column(name = "dest_id", nullable = false)
private UUID destId;
@Column(name = "order_type")
private OrderType orderType;
// @Column(name = "is_reviewed")
// private boolean isReviewed;
public void addOrderProduct(OrderProduct orderProduct) {
this.orderProducts.add(orderProduct);
}
public void updateOrderProducts(List<OrderProduct> updatedOrderProducts) {
this.orderProducts.clear();
for(OrderProduct orderProduct : updatedOrderProducts) {
addOrderProduct(orderProduct);
}
}
public void deleteOrderProduct(String userName) {
for(OrderProduct orderProduct : this.orderProducts) {
orderProduct.setDeleted(LocalDateTime.now(), userName);
}
}
}
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity(name = "p_order_products")
public class OrderProduct extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
@Column(name = "order_product_id")
private UUID orderProductId;
@ManyToOne
@JoinColumn(name = "order_id")
private Order order;
@ManyToOne
@JoinColumn(name = "product_id")
private Product product;
@Column(name = "product_quantity")
private Long productQuantity;
}