簡體   English   中英

一對多批處理級聯刪除

[英]One-To-Many Batch Cascade delete

我有兩個實體表和兩個實體的一個關系表。 關系定義如下:

實體1:

@JsonIgnore
    @OneToMany(fetch = FetchType.LAZY, cascade={CascadeType.REMOVE})
    @JoinColumn(name = "id", updatable = false, insertable = false)
    private Set<Entity1Entity2Relation> relations;

實體2

@JsonIgnore
@OneToMany(fetch = FetchType.LAZY, cascade={CascadeType.REMOVE})
@JoinColumn(name = "id", updatable = false, insertable = false)
private Set<Entity1Entity2Relation> relations;

關系表:

@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY, cascade={CascadeType.REMOVE})
@JoinColumn(name = "propertyId", updatable = false, insertable = false)
private Entity1 obj1;

@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY, cascade={CascadeType.REMOVE})
@JoinColumn(name = "structureId", updatable = false, insertable = false)
private Entity2 obj2;

如果實體1中的一個被刪除,我希望它的對應關系條目也被刪除,並且與實體2類似。

我在這里想念的是什么?

您在使用此映射時遇到什么問題/錯誤?

我看到一些需要更改的映射。 您應該刪除@JoinColumn上標注@OneToMany映射。 您已經在多對一側指定了@JoinColumn ,因此無需在一對多側進行指定。 通常,您將@JoinColumn放在關系的擁有方。 在一對多/多對一的雙向關系中,將@JoinColumn放置在與@ManyToOne映射的字段上。

此外,指定雙向關系的反向端,你的@OneToMany注解應該有一個mappedBy屬性。

應用我的建議,將導致失敗。 碼:

@Entity
public class Entity1 {
    ...
    @JsonIgnore
    @OneToMany(fetch = FetchType.LAZY, cascade={CascadeType.REMOVE}, mappedBy="obj1")
    private Set<Entity1Entity2Relation> relations;
    ...
}

@Entity
public class Entity2 {
    ...
    @JsonIgnore
    @OneToMany(fetch = FetchType.LAZY, cascade={CascadeType.REMOVE}, mappedBy="obj2")
    private Set<Entity1Entity2Relation> relations;
    ...
}

@Entity
public class Entity1Entity2Relation {
    ...
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY, cascade={CascadeType.REMOVE})
    @JoinColumn(name = "propertyId", updatable = false, insertable = false)
    private Entity1 obj1;

    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY, cascade={CascadeType.REMOVE})
    @JoinColumn(name = "structureId", updatable = false, insertable = false)
    private Entity2 obj2;
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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