jpa 用 save 更新时,如果直接 save(entity)的话,并不会忽略掉 entity 中 null 字段,就导致数据库原有的字段被覆盖。
问题我明白为什么,很难判断开发者需不需要更新 null 值。为啥 jpa 一直不加注解或者配置可以让开发者选择性忽略某些 null 字段?
stackoverflow 上有相关问题,回答都是要先查出来,手动 set 修改字段,然后再 save 一下。这样会有点复杂。entity 要加 @DynamicUpdate 注解(如果不需要更新全部字段的话),字段多的 entity 还需要用 BeanUtils 的工具,并且要手动过滤掉值为 null 的字段。没有别的好点的办法嘛?
ps: 题外话,用了几天感觉 jpa 学习成本比 mybatis 高好多。。不过写注解比写 sql 舒服多了