在jpa合并中,所有coumns都更新了,还是只有具有新值的列?
在更新时,如果我将某个属性的值设置为null,那么null值是否会存储在db中的cloumn中,还是会保留以前的值?
当合并实体 X 时, X 的整个状态将被“合并”(当然,如果 X 是有效的“候选者”)。JPA 1.0 规范是这样描述的:
3.2.4.1 合并分离实体状态
合并操作允许将状态从分离的实体传播到 EntityManager 管理的持久实体上。
应用于实体X的合并操作的语义如下:
- 如果 X 是分离实体,则X 的状态将复制到具有相同身份的预先存在的受管实体实例 X' 上,或者创建 X 的新受管副本 X'。
- 如果X是新的实体实例,则创建新的被管理实体实例X',并且X的状态被复制到新的被管理实体实例X'中。
- 如果 X 是已删除的实体实例,则
IllegalArgumentException
合并操作将抛出 an (否则事务提交将失败)。- 如果 X 是托管实体,则合并操作将忽略它,但是,如果这些关系已使用级联元素值或
cascade=MERGE
注释进行注释,则合并操作将级联到 X 中的关系引用的实体cascade=ALL
。- 对于由具有级联元素值
cascade=MERGE
或 的 X 的关系引用的所有实体 Ycascade=ALL
,Y 被递归合并为 Y'。对于 X 引用的所有此类 Y,X' 被设置为引用 Y'。(请注意,如果 X 是托管的,则 X 与 X' 是同一对象。)- 如果 X 是合并到 X' 的实体,并引用另一个实体 Y,其中 未指定
cascade=MERGE
或cascade=ALL
,则从 X' 导航相同的关联会产生对具有与 Y 相同持久标识的托管对象 Y' 的引用。持久性提供程序不得合并尚未获取的标记为 LAZY 的字段:合并时必须忽略此类字段。
Version
实体使用的任何列都必须在合并操作期间和/或刷新或提交时由持久性运行时实现进行检查。如果没有Version
列,则持久性提供程序运行时在合并操作期间不会进行额外的版本检查。
归档时间: |
|
查看次数: |
8779 次 |
最近记录: |