How to persist multiple new entity instances belonging to one common entity instance in one go

269 views Asked by At

There are 2 related entities in a Hibernate JPA project:

@Entity
public class Order {
    @Id @GeneratedValue(generator="order_sequence", strategy=GenerationType.IDENTITY)
    private int id;
}

and

@Entity
public class OrderItem {
    @Id @GeneratedValue(generator="orderitem_sequence", strategy=GenerationType.IDENTITY)
    @ManyToOne(cascade = CascadeType.ALL)
    private Order order;
    //....
}

With some detailed code ignored, I tried to merge a new Order instance with a List of OrderItem instances in cascade manner, i.e. merge the List<OrderItem> with an EntityManager - "em" in one go without merge the new Order:

for (OrderItem orderItem: orderItemList) {
    em.merge(orderItem);
}

But encountered error when the size of the List<OrderItem> is greater than 1: Unique index or primary key violation since the same Order is merged multiple times when merging each Order instance.

Question: How to resolve this error without merge the Order instance explicitly as a separate merge?

0

There are 0 answers