将新对象保存到表(StorIO)

时间:2016-02-09 12:11:06

标签: android storio

我希望将所有对象ReportDB保存为DB

中的新行
 App.get(context)
    .getStorIO()
    .put()
    .object(new ReportDB(keyStore.getKeyCategoryId(), keyStore.getKeyShelfId()))
    .prepare()
    .asRxObservable().subscribe(putResult -> ZLog.d("insertedId = "+putResult.insertedId()),
            throwable -> ZLog.d("throwable = ",throwable));

ReportDB是

@StorIOSQLiteColumn(name = ReportTable.COLUMN_ID,key = true)
long id;

@StorIOSQLiteColumn(name = ReportTable.CATEGORY_ID_I)
long categoryId;

@StorIOSQLiteColumn(name = ReportTable.SHELF_ID_I)
long shelfId;

@StorIOSQLiteColumn(name = ReportTable.LATITUDE_R)
double latitude;

@StorIOSQLiteColumn(name = ReportTable.LONGITUDE_R)
double longitude;

public ReportDB(long categoryId, long shelfId) {
    this.categoryId = categoryId;
    this.shelfId = shelfId;
}

但是现在,在运行代码两次后,我只有一行并记录

 insertedId = 0
 insertedId = null

如何自动增加ID?

1 个答案:

答案 0 :(得分:1)

StorIO不会为您管理表架构,它只是绑定到现有数据库并使用它,因此您有两种方法可以实现自动增量列:

  1. 将列设为INTEGER NOT NULL PRIMARY KEY
  2. 在您实体的PutResolver中自行提升自己(不要忘记将此代码包装到交易中!)
  3. 我建议使用第一个选项,因为它的工作速度更快,而且您不必编写任何代码 - >更难犯错误:))