Обновить весь объект с помощью 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

Часть "Установка" обновления поддерживает различные виды значений:

  1. ContentValues ​​-> преобразует в ключ / значение как SQLOperator is () / eq ()
  2. 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(); 

Из документации не ясно из исходного кода, но это должно работать таким образом.

Другие вопросы по тегам