项目里用到了mongodb,使用了springdata的repository做的,在自己测试的时候发现,repository的save方法,新增数据后没有返回数据库自增的主键,排查了较长时间。
后来发现是repository.save(entity) 这里的entity传入的id是个空字符串的原因

深入跟踪到源码里,发现这里isNew的判断对非原型类的id只是判断了null,而我传入的事空字符串。所以会走更新的流程。

在使用SpringData的repository进行MongoDB操作时,遇到save方法未返回数据库自增主键的问题。原因在于传入的id为而非null,导致isNew判断错误,进入更新流程而非插入。正确做法应确保id为null或不传递。
项目里用到了mongodb,使用了springdata的repository做的,在自己测试的时候发现,repository的save方法,新增数据后没有返回数据库自增的主键,排查了较长时间。
后来发现是repository.save(entity) 这里的entity传入的id是个空字符串的原因

深入跟踪到源码里,发现这里isNew的判断对非原型类的id只是判断了null,而我传入的事空字符串。所以会走更新的流程。

2730
2149

被折叠的 条评论
为什么被折叠?