spring data jpa的save()遇到的坑

本文讲述了在使用SpringDataJPA的save方法进行数据修改时,由于忽视了字段默认值的设定,导致线上出现NullPointerException的问题。通过深入理解save方法的工作原理,了解到只有使用特定注解如@DynamicUpdate时,JPA才会根据实体变化更新字段,否则未设置的值会被设为null。因此,在进行数据操作时,必须充分考虑所有字段状态以避免类似错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.由于项目用到了spring data jpa,新增修改都可以用save()方法,于是在修改的时候也用了save()方法

2.想着修改的时候只更新更新时间,创建时间不更新,这样可以看出是否被修改过,于是代码没有设置创建时间,以为可以自动获取创建时的创建时间

3.测试了修改接口也没问题,但是由于本人 考虑问题不全面,比较粗心,没有检查数据库中的数据,导致线上出现了NullPointerException

4.经排查是修改的时候导致的created_time为null

5.于是再次学习了data jpa的save方法,只有使用@DynamicUpdate//自动修改 和@DynamicInsert//自动添加才会根据id更新,然后只修改被修改的字段,否则传什么值保存什么值,未传的值默认为null

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值