我已经多次阅读了级联类型的定义,但是我仍然无法理解在特定情况下应该使用哪种。
Worker
类和Task
类之间存在@OneToMany
关系,因此worker
可以有多个任务,但每个Task
只属于一个Worker
private List <Task> tasks
在Worker
类中保存任务,而private Worker worker;
是Task
类中的Worker
对象
我卡在下面的?
处,不知道应该使用哪种级联类型。
@OneToMany(targetEntity=Task.class, mappedBy="worker", cascade=CascadeType.?, fetch = FetchType.LAZY)
两个对象都应该独立存在,但我希望对Task
对象的更改能够反映在Worker
对象上,反之亦然
最终(如果我能让这个工作 :) ),我应该编写一个算法来匹配最佳工人,当新任务进入系统时,我想知道我是否正确。谢谢
cascade=CascadeType.ALL
并添加deleteOrphan=true
。但是,如果您使用JPA 2/2.1 + Hibernate 5,则级联删除不会得到很好的管理,我建议您手动执行级联删除。 - ZorglubeorphanRemoval
而不是deleteOrphan
。如果使用deleteOrphan
,它将删除与另一侧没有关系的元素,这不是他想要的。 - cнŝdk