我已經多次讀取級聯類型定義,但我無法得到我的頭圍繞哪個用於我試圖實現的特定情況。休眠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',如果他使用它,它會刪除那些與另一端沒有關係的元素,這不是他正在尋找的元素。 –