配置:SpringBoot3+R2DBC+MYSQL
描述:在使用ReactiveCrudRepository的save方法保存实体时,正常有值为更新,但我的情况变成了只要有值就报错:Failed to update table []. Row with Id [] does not exist。并且数据库中是明明是有该Id对应的记录的。
参考文章1:无法解决问题:https://blog.youkuaiyun.com/luoyeyeyu/article/details/122321633
参考文章2:无法解决问题:Spring Data R2DBC响应式操作MySQL
最后来说我的解决办法:
发现R2DBC并不存在网上说的Id列有值不更新,无值不保存的问题。报这个错误完全是误报,
排查一:要保存的实体的值和数据库中要的值不匹配,然后报了这个错误。
排查二:如果先查询,然后再保存。即使用查询的结果,然后修改内容,然后save就容易报:Row with Id [] does not exist。解决办法:不要在查询的结果里面直接更改,而是新建一个对象

文章主要讨论了在SpringBoot3应用中使用R2DBC和MYSQL时遇到的ReactiveCrudRepository的save方法报错问题。错误信息为RowwithIddoesnotexist。作者分析了三种可能的原因:实体值与数据库不符、直接修改查询结果导致的问题,以及已有Id但数据库中无对应记录的情况。解决方案包括确保实体值与数据库一致,避免直接修改查询结果,以及在需要插入带Id实体时实现Persistable接口并重写isNew方法。
最低0.47元/天 解锁文章
5075

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



