在编写 2.3.1 时,我已将Objectbox从版本 1.5 升级到了最新版本。
当我第一次使用最新版本运行该版本时,系统告诉我从双变量中删除索引,因为目前不支持该索引(为什么?)。
/**
* Before (working flawlessly on Objectbox version 1.5)
*/
@Entity
public class MyEntity {
@Id(assignable = true) private long id;
private String Name;
private String Address;
private String Name;
private String Meta;
@Index private Double Lat;
@Index private Double Lng;
}
/**
* After removing conflicting indexes (Objectbox version 2.3.1)
*/
@Entity
public class MyEntity {
@Id(assignable = true) private long id;
private String Name;
private String Address;
private String Name;
private String Meta;
private Double Lat; // removed @Index
private Double Lng; // removed @Index
}
Objectbox数据库(lib版本1.5)中已经保存了许多实体,我真的无法让我的用户通过这种(简单的)升级来松开它们。
在删除Lat,Lng上有冲突的@Index之后,代码成功编译,但是Objectbox初始化其数据库后,我立即获得以下RuntimeException。
java.lang.RuntimeException: Unable to create application com.activity.MyApplication:
io.objectbox.exception.DbException:
Indexing of float and double is currently unavailable. Please remove the index on Property Lat (5, Double)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5743)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
看一下default.json文件的差异,似乎它已由Objectbox成功更新,并且Lat,Lng的索引不再存在。
我想念什么?帮助将不胜感激。