0

我想将所有对象 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));

报告数据库是

@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 ?

4

1 回答 1

1

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

  1. 创建列为INTEGER NOT NULL PRIMARY KEY
  2. 在您的实体中增加计数器PutResolver(不要忘记将此代码包装到事务中!)

我建议使用第一个选项,因为它会工作得更快,而且您不必为此编写任何代码 -> 更难犯错误 :)

于 2016-02-09T15:51:33.847 回答