Вы можете использовать:
@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.REMOVE)
private Set<Car> cars;
, а затем все автомобили, относящиеся к этому производителю, также будут удалены при удалении производителя.
Это имеет смысл, если все автомобили требуют производителя.
Если автомобиль может существовать без производителя, тогда вместо него можно использовать следующий код (указать его в сущности «Производитель»):
@PreRemove
private void preRemove() {
for (Car car: cars) {
car.setManufacturer(null);
}
}
Таким образом, автомобили, принадлежавшие удаленному производителю, все еще будут существовать, но будут иметь нулевого производителя.
Если вы не хотите использовать аннотацию @PreRemove, вы можете выполнить итерацию внутри нее вручную, используя свой метод удаления производителя.