簡體   English   中英

JPA:映射為@ManyToMany @JoinTable的關系的隱式級聯?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM