我已经多次读取级联类型定义,但我无法得到我的头围绕哪个用于我试图实现的特定情况。休眠JPA级联类型
我有worker
的Worker
类和Task
类之间@OneToMany
关系,因此可以具有多个任务,但每一Task
是仅对于一个Worker
private List <Task> tasks
保持任务在Worker
类和 private Worker worker;
是Worker
对象在Task
类
我被困在下面的?
,不知道我应该使用哪个级联类型。
@OneToMany(targetEntity=Task.class, mappedBy="worker", cascade=CascadeType.?, fetch = FetchType.LAZY)
应该不存在彼此两个对象,但我想改变Task
对象,以反映Worker
对象上,反之亦然
最终(如果我能得到这个工作:))我我想写一个算法来匹配最好的工作人员,当一个新的任务进入系统我想知道我是否在正确的轨道上。由于
“两个对象应该彼此不存在,但我希望对Task对象的更改反映在Worker对象上,反之亦然”< - 您能指定那个意思吗?你的意思是,如果你修改了“Task-A”,那么Worker对象链接到的“Task-A”不应该链接到旧版本的“Task-A”?如果这就是你所关注的一切,那么你完全不需要CascadeType(NONE)。 –
我建议你'cascade = CascadeType.ALL'并添加'deleteOrphan = true'。但是如果你使用JPA 2/2.1 + Hibernate 5时要小心,级联删除管理不好,我建议你手动进行级联删除。 – Zorglube
@Zorglube它是'orphanRemoval'而不是'deleteOrphan',如果他使用它,它会删除那些与另一端没有关系的元素,这不是他正在寻找的元素。 –