繁体   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