spring-data-jpa执行save的更新操作,将实体类传入,怎么忽略实体类中为null的参数进行更新呢?比如: student表
id   name  age
1     张三    21现在执行save(student)的时候,student中id=1,age=20,那么执行成功后就会将数据库中原本这条记录的name修改成null。
结果就变成了:
id   name  age
1               20
请问怎么样才能让jpa执行save操作的时候忽略student中为null的值,不参与更新呢?
让结果变成:
id   name  age
1     张三    20

解决方案 »

  1.   

    JPA执行更新操作的时候,一般都是先根据id去数据库中查找到那条数据再把你更新了的值set进去,最后再save吧
      

  2.   

    你可以使用saveOrUpdate,前提是你的id不能是自动生成的
      

  3.   

    可是jpa现在已经没有saveorupdate方法了呀,只剩下个save方法
      

  4.   

    直接执行update方法呢? 我记得update是先查询 如果存在该条记录会执行update 如果没有该记录 执行save方法
      

  5.   

    动态更新,在modle中加上注解:@DynamicUpdate,可以达到效果动态更新bean中不为空的字段
      

  6.   

    spring boot data jpa @DynamicUpdate 已经失效了,老外说有bug
      

  7.   

    正确的方法我不知道有没有,但是咱们可以运用其他手段给它过滤掉。可以用到阿里开发的fastjson里的方法把为null的字段过滤掉生成一个不包含为nul的字段l的对象。
    不过这样一来。部分代码可能要做相应的修改。具体方法可以去百度找相关知识