springboot项目中,实体a继承实体b,使用mybatisplus自带的updateById方法更新数据库时,实体b中某个字段不会更新,有可能是哪里的问题
时间: 2023-03-04 21:57:32 浏览: 446
Mybatis Plus 字段为空值时执行更新方法未更新解决方案
在 Spring Boot 项目中,当实体 A 继承实体 B 时,使用 MyBatis Plus 自带的 `updateById` 方法更新数据库时,实体 B 中某个字段不会更新可能是以下问题之一:
1. 字段不可见或不可访问
MyBatis Plus 通过反射获取实体类的属性,如果实体 B 中的某个字段的访问修饰符是 `private` 或 `protected`,则可能会导致 MyBatis Plus 无法访问该字段,从而更新失败。为了解决这个问题,可以将该字段的访问修饰符改为 `public` 或提供 `getter/setter` 方法。
2. 字段名不匹配
如果实体 B 中的某个字段在数据库中的列名与实体 B 中的字段名不一致,也会导致更新失败。为了解决这个问题,可以使用 MyBatis Plus 提供的 `@TableField` 注解或者在 `application.yml` 中进行配置,来指定实体类字段名和数据库表列名的映射关系。
3. 实体类缓存问题
MyBatis Plus 在进行 CRUD 操作时,会通过缓存获取实体类的元信息,例如表名、字段名等。如果修改了实体类的继承关系或者字段属性,而缓存中的信息没有及时更新,则会导致更新失败。为了解决这个问题,可以尝试清空 MyBatis Plus 的缓存或者重启应用程序。
以上是可能导致实体 B 中某个字段不更新的一些常见问题,可以根据具体情况进行排查。
阅读全文