spring boot jpa级联保存

CascadeType

1.示例

1.1.domain

oneToMany关系
one的一方中加

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)

	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
    @JoinColumn(name = "contract_id", referencedColumnName = "id")
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private List<ContractItem> contractItems = new ArrayList<>();

2.CascadeType讲解

本示例中CascadeType.PERSIST是保存级联

CascadeType.REMOVE
Cascade remove operation,级联删除操作。
删除当前实体时,与它有映射关系的实体也会跟着被删除。
CascadeType.MERGE
Cascade merge operation,级联更新(合并)操作。
当Student中的数据改变,会相应地更新Course中的数据。
CascadeType.DETACH
Cascade detach operation,级联脱管/游离操作。
如果你要删除一个实体,但是它有外键无法删除,你就需要这个级联权限了。它会撤销所有相关的外键关联。
CascadeType.REFRESH
Cascade refresh operation,级联刷新操作。
假设场景 有一个订单,订单里面关联了许多商品,这个订单可以被很多人操作,那么这个时候A对此订单和关联的商品进行了修改,与此同时,B也进行了相同的操作,但是B先一步比A保存了数据,那么当A保存数据的时候,就需要先刷新订单信息及关联的商品信息后,再将订单及商品保存。
CascadeType.ALL
Cascade all operations,清晰明确,拥有以上所有级联操作权限。

posted @ 2019-08-22 10:48  叶落无蝉鸣  阅读(314)  评论(0编辑  收藏  举报