什么是CascadeType.REFRESH真正做?
CascadeType.REFRESH
它的定义是
刷新实体时,此字段中保存的所有实体也会刷新
但这实际上意味着什么?有人可以给我一个简单的例子吗?
单独的CascadeType描述可能会有些混乱,但是有一种简单的方法可以从一般情况中找出来。
对于任何CascadeType值,这意味着如果X使用EntityManager接口在实例上调用了操作,并且该实例具有对其他实体实例的引用,并且已经CascadeType.X定义了关联,则该EntityManager操作也将应用于该关联实体。
CascadeType
X
EntityManager
CascadeType.X
因此EntityManager.refresh()定义为:
EntityManager.refresh()
从数据库中刷新实例的状态,覆盖对实体所做的更改(如果有)。
因此,如果实体A具有对实体B的引用,并且该引用用注释@CascadeType.REFRESH,并且EntityManager.refresh(A)被调用,那么EntityManager.refresh(B)也将隐式调用。
@CascadeType.REFRESH
EntityManager.refresh(A)
EntityManager.refresh(B)