采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,JpaRepository的save(product)方法做更新操作,更新商品的库存和价格,所以入参的product只 设置了商品的库存和价格,结果调用完save方法后,除了库存和价格的数据变了,其他字段全部被更新成了 null,学生要怎么做,才能动态更新我需要的更新的字段,而其他不需要更新的字段不会被更新到
你对这个动态更新理解有误。
要先查询,再更新
OrderMaster orderMaster = repository.findOne("1234567"); orderMaster.setBuyerName("师兄22222333"); OrderMaster result = repository.save(orderMaster);
如果没有加@DynamicUpdate,控制台打印如下
Hibernate: update order_master set buyer_address=?, buyer_name=?, buyer_openid=?, buyer_phone=?, create_time=?, order_amount=?, order_status=?, pay_status=?, update_time=? where order_id=?
如果加了,会是这样
Hibernate: update order_master set buyer_name=? where order_id=?
我猜测你的做法应该是直接new一个对象,然后save它,你想一下,假如属性值是null, 那Jpa怎么知道你想要忽略还是真的设置为null呢
是的,我根据前台传来的数据转化成对象,JSONObject.parseObject(data,Order.class),然后执行save()操作,所以前台没有传过来的属性都会为空,所以就会更新成null,那这样的话就没有什么好的动态更新的方法了吗,我需要先从数据库中拿到需要更新的那条数据,然后对前台传来的对象属性进行判空,不为空的属性我就覆盖掉,再执行save操作?
是的。
在你的model类上加@DynamicUpdate
这个方法实现过了,不行耶
登录后可查看更多问答,登录/注册
从0到1开发中小型企业级Java应用,并学会迭代重构技巧
8.1k 10
3.2k 4
6.7k 9
2.0k 32
4.0k 26