Итак, как я уже упоминал из этих слов:
edit: все, что я хочу сделать, когда тип_оборудования или событие удалено, я хочу, чтобы он уничтожил всю историю проверок / проверок -это ... действительно так, но не устанавливая все в CascadeType.ALL, оно выдает исключение
У вас есть equipment_type, связанный, например, equipment_checkouts как OneToMany:
public class EquipmentType {
@Id
private long id;
@OneToMany(mappedBy = "equipmentType")
private List<EquipmentCheckout> checkouts
}
public class EquipmentCheckOut {
@Id
private long id;
@ManyToOne
private EquipmentType equipmentType;
}
Как я понимаю, вы должны использовать orphanRemoval = true
в аннотации @OneTomany
и с другой стороны optional = false
, чтобы указать, что родительский элемент EquipmentCheckOut не может быть нулевым.Я не уверен, но, возможно, вам следует использовать cascade = {CascadeType.REMOVE, CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH}
вместо CascadeType.ALL
, чтобы предотвратить ошибку, если у EquipmentType
есть родитель (например, для учетной записи).Таким образом, результат будет выглядеть следующим образом:
открытый класс EquipmentType {
@Id
private long id;
@OneToMany(mappedBy = "equipmentType",
cascade = {CascadeType.REMOVE, CascadeType.DETACH, CascadeType.MERGE, cascadeType.REFRESH},
orphanRemoval = true))
private List<EquipmentCheckout> checkouts
}
public class EquipmentCheckOut {
@Id
private long id;
@ManyToOne(optional = false)
private EquipmentType equipmentType;
}
Но, как отметил Гонсало Гарсия Ласуртеги, вам лучше предложить нам больше информации (сущности, сопоставления и т. Д.)