题
CascadeType.REFRESH
实际上做了什么?
它的定义是
当我们刷新实体时,此字段中保留的所有实体也会刷新
但这在实践中意味着什么?有人可以给我一个简单的例子吗?
解决方案
单独的CascadeType描述可能有点令人困惑,但有一种简单的方法可以从一般情况中找出它。
对于任何 CascadeType
值,这意味着如果使用 EntityManager
接口在该实例上调用operation X
,那么该实例引用了其他实体实例,并且该关联定义了 CascadeType.X
,然后 EntityManager
操作也将应用于该关联实体。
所以 EntityManager.refresh()
定义为:
从中刷新实例的状态 数据库,覆盖所做的更改 到实体,如果有的话。
因此,如果实体A具有对实体B的引用,并且该引用使用 @ CascadeType.REFRESH
注释,并且 EntityManager.refresh(A)
被调用,则 EntityManager.refresh(B)
也被隐式调用。
其他提示
按刷新检索: 可以使用refresh方法从数据库重新加载托管对象:
内存中托管对象的内容将被丢弃(包括更改,如果有),并替换为从数据库中检索的数据。这可能有助于确保应用程序处理实体对象的最新版本,以防它被检索后可能已被另一个EntityManager更改。
不隶属于 StackOverflow