Ваш случай - стандартный родительский дочерний случай.Вам необходимо объявить следующее:
@Entity
public class Bill extends Model {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true, mappedBy="bill")
public List<Booking> bookings = new ArrayList<Booking>();
}
@Entity
public class Booking extends Model {
@ManyToOne public Bill bill;
}
Этот код содержит все необходимые объявления.OrphanRemoval гарантирует, что всякий раз, когда вы удаляете бронирование из Билла (т. Е. Когда это бронирование становится осиротевшим), оно будет удаляться из базы данных.Если вы удалите Билл, то все его резервирования также будут удалены (с помощью аннотации CascadeType.ALL).
С помощью вышеуказанных объявлений вы можете установить Бронирование на
for(Booking booking : bookings) {
bill.bookings.add(booking);
booking.bill = bill;
}
(выне нужно кодировать setBookings () самостоятельно), но вы должны убедиться, что вы вносите изменения с обеих сторон.
Для удаления, если вы установили для Налогового счета счет-фактуру равным нулю и удалили его из бронирований Билла.:
booking.bill = null;
bill.bookings.remove(booking);
должен сделать это.
Если вы позвоните
booking.delete();
, то и его заказы должны быть удалены.
Действительно довольно стандартно....