How to connect entity without deleting existing info

17 views Asked by At

I am coding my pet project, back-end delivery service on spring boot. I have orders and couriers. Courier.class

public class Courier {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
    private Integer id;
...
    @OneToMany(mappedBy = "courier", cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<Order> order= new HashSet<>();

}

Order.class

public class Order{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
    private Long id;
...

    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
    private Courier courier;
}

I can add couriers and orders, but then I need to post completion_time to order and add completed order to courier's Set<> @OneToMany The problem is: all post to courier's and order's repo are made in different services, called from different controller, order-controller and courier-controller. When I try to add completion_name to order in OrderService, i do it like that:

Courier courier =new Courier().setId(completeOrder.getCourier_id());
order.setCourier(courier);

and the result is: hibernate deletes all values except id in this courier and doesnt add completed order to courier' set

When I try to change CascadeType to .PERSIST, I get error from Courier. If I try to add completed order to courier by id, I get java.lang.StackOverflowError: null

0

There are 0 answers