Сохранить новый объект в таблицу (StorIO)
Я хочу сохранить все объекты ReportDB как новую строку в БД
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
Как автоматически увеличить идентификатор?
1 ответ
StorIO не управляет схемой таблиц за вас, он просто привязывается к существующей базе данных и работает с ней, поэтому у вас есть 2 способа добиться автоинкрементного столбца:
- Создать столбец как
INTEGER NOT NULL PRIMARY KEY
- Увеличивайте счетчик себя в
PutResolver
вашей сущности (не забудьте о переносе этого кода в транзакцию!)
Я бы предложил использовать 1-й вариант, потому что он будет работать быстрее, и вам не нужно писать какой-либо код для этого -> сложнее сделать ошибку:)