我有一個數據庫的Web應用程序,其中兩個實體具有多對多的關係,但我手動實現了連接表。當其中一個實體被刪除時,它會刪除連接表中的所有條目並更新另一個實體,因此所有實體都可以很好地工作,但現在我應該爲此功能編寫一個測試。爲了測試我使用的內存數據庫,這就是真正的,唯一的區別,具有相同的註解(和級聯型)相同的方法被調用,但我不斷收到:CascadeType不適用於內存數據庫
org.hibernate.exception.ConstraintViolationException: integrity constraint violation: foreign key no action; FKC17477FD8940DF2B table ENTITY1_ENTITY2
我沒有粘貼任何代碼自從它工作以來,我不相信它有什麼問題。我不要求爲我解決這個問題,我只需要知道什麼可能會導致這種行爲,因爲我剛剛用完了想法,我不知道還有什麼要搜索的......謝謝
編輯:下面是一些代碼:
@Entity
@Table(name = "interviewer")
public class Interviewer implements Identifiable {
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "interviewer_id")
private Collection<InterviewerTechnology> technologies;
}
@Entity
@Table(name = "technology")
public class Technology implements Identifiable {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "technology_id")
private Collection<InterviewerTechnology> technologies;
}
@Entity
@Table(name = "interviewer_technology")
public class InterviewerTechnology implements Identifiable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
private Interviewer interviewer;
@ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
private Technology technology;
}
@Component
public class TechnologyDao extends AbstractEntityDao<Technology> {
public void remove(Integer id) {
Technology technology = find(id);
em.remove(technology);
}
}
此代碼不正是我想要它做的,它似乎只是用於測試,並沒有看到CascadeType的參數在這裏做所有的工作
如果您向我們展示代碼,對我們來說,這仍然會輕鬆許多。 – Schokea
好的,會粘貼相關的部分 – Lucas
嘗試CascadeType.PERSIST – Schokea