spring data jpa 的save()方法

来源:4-2 买家类目-dao(下)

朱小悬

2017-11-23

老师,JpaRepository的save(product)方法做更新操作,更新商品的库存和价格,所以入参的product只
设置了商品的库存和价格,结果调用完save方法后,除了库存和价格的数据变了,其他字段全部被更新成了
null,学生要怎么做,才能动态更新我需要的更新的字段,而其他不需要更新的字段不会被更新到


写回答

2回答

廖师兄

2017-11-26

你对这个动态更新理解有误。

要先查询,再更新

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呢

0
2
廖师兄
回复
朱小悬
是的。
2017-11-27
共2条回复

廖师兄

2017-11-24

在你的model类上加@DynamicUpdate

0
1
朱小悬
这个方法实现过了,不行耶
2017-11-25
共1条回复

Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统

从0到1开发中小型企业级Java应用,并学会迭代重构技巧

6410 学习 · 5247 问题

查看课程