JPA保存()方法将字段更新为零的解决方案

  

这篇文章主要介绍了JPA保存()方法将字段更新为零的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

今天在开发上碰到一个问题,在做页面展示的时候传给前端十个字段,前端修改了其中3个的值,所以只传了3个值给后端,其余字段默认为null,更新后其他7个字段在全部变为了空值。

  

在前端没法全量回传所有属性的前提下,由后端来处理这类问题。
  解决方法:

  

1。写一个工具方法(UpdateUtil)用来筛选出所有的空值字段
  

  

2。更新时先通过id搜索原始对象,通过findone()等都可以
  

  

3。将前端传来的不为空参数(也即是要修改值)复制覆盖原始对象属性值,通过BeanUtils。copyNullProperties(对象来源,对象目标)

  

以下是工具方法:

     /* *   *更新用工具类(忽略为零的字段)   */公开课UpdateUtil {/* *   *所有为空值的属性都不拷贝   *   * @param源   * @param目标   */公共静态孔隙copyNullProperties(对象来源,对象目标){   BeanUtils。copyProperties(源、目标getNullField(源));   }/* *   *获取属性中为空的字段   *   * @param目标   * @return   */私有静态String [] getNullField(对象目标){   BeanWrapper BeanWrapper=new BeanWrapperImpl(目标);   PropertyDescriptor [] propertyDescriptors=beanWrapper.getPropertyDescriptors ();   Set,notNullFieldSet=new HashSet<的在();   如果(propertyDescriptors。长度比;0){   (PropertyDescriptor p: propertyDescriptors) {   字符串名称=p.getName ();   对象价值=https://www.yisu.com/zixun/beanWrapper.getPropertyValue(名称);   如果(Objects.isNull(值)){   notNullFieldSet.add(名称);   }   }   }   String [] notNullField=新的字符串(notNullFieldSet.size ());   返回notNullFieldSet.toArray (notNullField);   }   }      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

JPA保存()方法将字段更新为零的解决方案