Обновить весь объект с помощью DBFlow
Я использую DBFlow в своем проекте Android, и я хотел бы знать, есть ли способ обновить весь объект вместо указания каждого столбца, как показано ниже
// Native SQL wrapper
SQLite.update(Ant.class)
.set(Ant_Table.type.eq("other"))
.where(Ant_Table.type.is("worker"))
.and(Ant_Table.isMale.is(true))
.async()
.execute(); // non-UI blocking
Из руководства https://agrosner.gitbooks.io/dbflow/content/SQLiteWrapperLanguage.html
Часть "Установка" обновления поддерживает различные виды значений:
- ContentValues -> преобразует в ключ / значение как SQLOperator is () / eq ()
- SQLOperator, которые сгруппированы как часть инструкции SET.
Исходя из этого, я попытался передать ContentValues в метод set
// Native SQL wrapper
SQLite.update(Ant.class)
.set(contentValues)
.where(Ant_Table.type.is("worker"))
.and(Ant_Table.isMale.is(true))
.async()
.execute(); // non-UI blocking
и я получаю ошибку компиляции
set (com.raizlabs....SQLOperator...) in Update cannot be applied
to (android.content.ContentValues)
1 ответ
Решение
Вы должны назвать это так:
SQLite.update(Ant.class)
.set().conditionValues(contentValues)
.where(Ant_Table.type.is("worker"))
.and(Ant_Table.isMale.is(true))
.async()
.execute();
Из документации не ясно из исходного кода, но это должно работать таким образом.