[英]JPA: implicit cascades for relationships mapped as @ManyToMany @JoinTable?
我有以下映射:
@Entity
@Table(name = "Prequalifications")
public class Prequalification implements Serializable
{
...
@ManyToMany
@JoinTable(name = "Partnerships", joinColumns = @JoinColumn(name = "prequalification_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "company_id", referencedColumnName = "id"))
private Set<Company> companies;
...
}
在@ManyToMany
+ @JoinTable
映射關系中,是不是暗示關聯(鏈接)實體(此處為Partnerships
)會自動持久化,刪除等等,即使
默認情況下,關系具有空級聯集
? 以上引用來自“Pro JPA 2,Mike Keith”。
執行
em.merge(prequalification);
在上述實體上確實保留了相關的合作關系而沒有指定任何級聯類型。
我是正確,這隱含的級聯必須執行? 在我看的任何地方都沒有提到......
連接表中的行將作為擁有實體的一部分插入/刪除(如果沒有mappedBy的一側是雙向的)。 因此,如果您持久或刪除或更新資格預審,則還將插入或刪除連接表行。
目標公司對象不會級聯到。 所以在remove()上它們不會被刪除,如果列表被更新,除非設置了orphanRemovla,否則它們不會被刪除。 持久性也不應該是級聯的,但是當你引用“分離”對象時會發生什么,這在某種程度上是一個灰色區域。 從技術上講,應該拋出一個錯誤,因為該對象是新的,並且關系不是級聯持久的。 它也可能嘗試插入並獲得約束錯誤。 它不應該級聯持久化,雖然您的對象模型在技術上處於無效狀態,因此發生的情況可能取決於提供者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.