使用JPA将某些字段的值设置为null

使用JPA将某些字段的值设置为null,jpa,merge,Jpa,Merge,在jpa合并中,是所有列都更新了,还是只更新了具有新值的列 更新时,如果我将某个属性的值设置为null,则null值将以db形式存储在该克隆中,还是保留以前的值?合并实体X时,X的整个状态将被“合并”(当然,如果X是有效的“候选对象”)。JPA 1.0规范是这样描述的: 3.2.4.1合并分离实体状态 合并操作允许 分离态的传播 将实体转换为持久实体 由EntityManager管理 合并操作的语义 适用于实体X的参数如下: 如果X是分离的实体,将X的状态复制到预先存在的实体上 同一实体的托管

在jpa合并中,是所有列都更新了,还是只更新了具有新值的列


更新时,如果我将某个属性的值设置为null,则null值将以db形式存储在该克隆中,还是保留以前的值?

合并实体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
    cascade=ALL
    注释
  • 对于X中关系引用的所有实体Y,具有 级联元素值
    cascade=MERGE
    cascade=ALL
    ,Y递归合并 如“Y”。对于所引用的所有此类Y 十、 X'设置为参考Y'。(注 如果X被管理,那么X就是 与X'相同的对象。)
  • 如果X是一个合并到X'的实体,并引用另一个实体Y,其中
    cascade=MERGE
    cascade=ALL
    是 未指定,则为 X'的相同关联产生a 对托管对象Y'的引用,带有 与Y相同的持久标识
持久性提供程序不能 合并标记为惰性的字段,但这些字段尚未 已获取:它必须忽略此类 合并时的字段

用户使用的任何
版本
列 实体必须由 持久性运行时实现 在合并操作期间和/或在 刷新或提交时间。缺席 在
版本
列中没有 由执行的附加版本检查 持久性提供程序运行时 在合并操作期间


这与你之前的问题高度相关: