GreenDAO 不会在应用程序重新启动后保留数据



我想使用 GreenDAO 进行持久性,但我无法让它持久化我的数据。

只要应用程序不重新启动,数据就会正确保存和加载。

一旦我滑动应用程序并从头开始重新打开它,GreenDAO 就看不到以前的数据(在模拟器和真实设备上(。

这是我的实体:

@Entity
public class TestSingleEntity {
    @Id(autoincrement = true)
    Long id;
    int someNumber;
    public TestSingleEntity(int someNumber) {
        this.someNumber = someNumber;
    }
    @Generated(hash = 787203968)
    public TestSingleEntity(Long id, int someNumber) {
        this.id = id;
        this.someNumber = someNumber;
    }
    @Generated(hash = 1371368161)
    public TestSingleEntity() {
    }
// ... some more stuff
}

这是我将实体插入数据库的方式:

Random rnd = new Random();
TestSingleEntity singleEntity = new TestSingleEntity();
singleEntity.setSomeNumber(rnd.nextInt());
DaoSession session = ((MyApp)getApplication()).getDaoSession();
TestSingleEntityDao dao = session.getTestSingleEntityDao();
dao.insert(singleEntity);
Log.d("tgd", "Inserted an entity with id " + singleEntity.getId());

这就是我阅读它们的方式: 查询查询 = dao.queryBuilder((.orderAsc(TestSingleEntityDao.Properties.SomeNumber(.build((; StringBuilder builder = new StringBuilder((;

List<TestSingleEntity> result = query.list();
Log.d("size", result.size());
for (TestSingleEntity testSingleEntity : result) {
    Log.d("entity", testSingleEntity.toString());
}

正如我所说,只要我留在应用程序中(在不同的活动中四处走动是可以的(,每次调用insert时,都会创建一个具有新 ID 的新实体。一旦我重新启动应用程序,它就会回到原点。

设置直接取自 GitHub 页面。我做错了什么?谢谢

免责声明:自从我上次使用它以来,GreenDAO 经历了重大变化,所以这纯粹是基于在 github 上阅读他们的代码。

显然,GreenDAO记录不佳的DevOpenHelper在升级时会删除所有表,因此真正的问题是为什么在显然没有更改模式版本的情况下调用onUpgrade。尝试查找提及删除表的日志行,如模板中所述 DevOpenHelper

无论如何,改用OpenHelper应该可以解决问题。

相关内容

  • 没有找到相关文章

最新更新