我試圖學習使用Hibernate,但可能我不明白@ManyToOne
和反向關係。我有兩個實體Author
和Department
。一個作者有一個部門,一個部門有許多作者。Hibernate @ManyToOne刪除一邊的條目,在許多方面設置FK爲NULL
當我刪除作者時,部門不應該發生任何事情。當我刪除部門時,作者表中的FK應更新爲NULL
值(作者不應被刪除)。
我發現nice explanation of inversion和想通了,Author
是一個擁有方,並根據this thread當我刪除child(部)的FK應設置爲NULL
。但它不會發生,因爲只有部門被刪除,並且FK保留在作者表中(導致org.hibernate.ObjectNotFoundException: No row with the given identifier exists
)。
當我在Department
實體中添加CascadeType.REMOVE
到@OneToMany
註釋時,所有與部門關聯的作者也被刪除。上述兩種狀態均不可取。我只想刪除Department並將Author表中的FK設置爲NULL
。怎麼做?
Author
和Department
實體註釋:提前