方案有两个, 一个是官方给的方法1:
方法1
查找官方文档,按下面步骤操作就能解决。Delete the JSON file (objectbox-models/default.json)(删除objectbox-models/default.json)
Build the project to generate a new JSON file from scratch(重新build项目,生成一个新的JSON文件)
Commit the recreated JSON file to your VCS (e.g. git)(提交到本地版本管理)
Delete all previously create ObjectBox databases (for Android, e.g. delete the app’s data or uninstall the app)(删除之前所有创建的ObjectBox的数据库,在Android中就是删除APP的数据或者直接卸载APP)
这样的确可以解决问题,但是如果,现有的设备很多,我们无法卸载安装app,且当前的编译环境变化了default.json的文件已经更新了那么我们就可以用方法2解决了
方法2
报错的原因是:由于我们修改了有@Entity标注的实体的内容,重新编译项目之后,生成的UID和APP本地缓存里面的Incoming Entity ID不一致。
上面的方法就是卸载app, 删除数据库,那我们换个思路,我们只要更改了数据库的存储位置,这样初始化数据库时,也不会再去读取旧的数据库导致报错了,如下:
boxStore = MyObjectBox.builder()
.androidContext(context.getApplicationContext())
.directory(new File(Constants.ROOT_PATH+"data/"))
.build();
这样就不会报错了!
其实我们并没有解决根本问题,如果本地数据库的数据特别重要,那就不能用这种办法了,如果有更好的方案,请在评论区告诉我,非常感谢!