在jpa合并中,是所有列都更新还是仅更新具有新值的列?
在更新时,如果我将某些属性的值设置为空,空值将存储在数据库的该列中,还是会保留以前的值?
当合并实体X时,整个州X 的将被“合并”(当然,如果 X 是有效的“候选者”)。 JPA 1.0 规范是这样说的:
3.2.4.1 合并分离实体状态
合并操作允许
从分离状态传播
实体到持久实体
由EntityManager管理。
合并操作的语义
应用于实体 X 的规则如下:
- 如果 X 是一个独立实体,X的状态被复制到一个预先存在的
同一管理实体实例 X'
身份或 X 的新托管副本 X'
被建造。
- 如果 X 是新的实体实例,则创建新的托管实体实例 X'
X 的状态被复制到
新的受管实体实例 X'。
- 如果 X 是已删除的实体实例,则
IllegalArgumentException
将
由合并操作抛出(或
事务提交将会失败)。
- 如果 X 是托管实体,则合并操作将忽略它,
然而,合并操作是
级联到引用的实体
与 X 的关系,如果这些
关系已注释为
级联元素值
cascade=MERGE
or cascade=ALL
注解。
- 对于由 X 的关系引用的所有实体 Y 具有
级联元素值
cascade=MERGE
or
cascade=ALL
, Y 递归合并
作为Y'。对于所有这样的 Y 引用
X、X'设置为参考Y'。 (笔记
如果 X 被管理,那么 X 就是
与 X' 相同的对象。)
- 如果 X 是合并到 X' 的实体,并引用另一个实体 Y,其中
cascade=MERGE
or cascade=ALL
是
未指定,则导航
来自 X' 的相同关联产生
对托管对象 Y' 的引用
与 Y 具有相同的持久身份。
持久性提供者不得
合并标记为 LAZY 且未标记为 LAZY 的字段
已获取:它必须忽略此类
合并时的字段。
Any Version
使用的列
实体必须由
持久化运行时实现
在合并操作期间和/或在
刷新或提交时间。离席期间
的Version
列没有
额外的版本检查由
持久化提供者运行时
在合并操作期间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)