[英]Getting referential integrity constraint violation while trying to delete from OneToMany relation with cascadeType.ALL in hibernate
這是我要從中刪除的表的相關代碼:
/**
* Liste der Aufgaben der Abgabe
*/
@Setter
@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
@JoinTable(
name = "ABGABEAUFGABENZUORDNUNG",
joinColumns = {@JoinColumn(name = "ABGABE")},
inverseJoinColumns = {@JoinColumn(name = "AUFGABE")}
)
private List<Aufgabe> aufgaben = new ArrayList<>();
這些是我用於刪除和更新的 hibernate 函數:
@Override
public void update(Abgabe abgabe) throws NullPointerException {
HibernateUtil.execute(s -> s.update(abgabe));
}
@Override
public void delete(Abgabe abgabe) {
HibernateUtil.execute(s -> s.delete(abgabe));
}
這些是我的表:
CREATE TABLE `Abgabe` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL UNIQUE,
`gewicht` FLOAT NOT NULL,
`date` SMALLDATETIME NOT NULL UNIQUE,
`gruppenAbgabe` BOOLEAN,
`bewertet` BOOLEAN,
`kommentar` varchar(1000),
PRIMARY KEY (`id`)
);
CREATE TABLE `Aufgabe` (
`id` INT NOT NULL AUTO_INCREMENT,
`oberaufgabe_Id` INT,
`name` VARCHAR(255) NOT NULL,
`maxPunkte` FLOAT,
`maxPunkteMitGewicht` FLOAT,
`gewicht` FLOAT NOT NULL,
`bewertungskriterien` VARCHAR(255),
PRIMARY KEY (`id`)
);
CREATE TABLE `AbgabeAufgabenZuordnung` (
`abgabe` INT NOT NULL,
`aufgabe` INT NOT NULL
);
現在,當我嘗試從 abgabe 中刪除 aufgabe 時,我得到了這個異常:
Caused by: org.hibernate.MappingException: Could not determine type for: de.unibremen.swp.model.benotung.Abgabe, at table: BEWERTETEABGABE, for columns: [org.hibernate.mapping.Column(ABGABE)]
我在這里看到了其他問題,答案是使用 Cascade=CascadeType.ALl 但這對我不起作用。
這不是“刪除期間”的運行時錯誤,而是引導錯誤。 您的 model 未正確映射,但除非您共享整個實體 model,否則我無法幫助您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.