Я использую библиотеку постоянства Room для Android и пытаюсь выполнить запрос на обновление для логического поля.
@Update
suspend fun updateProduct(product: Product)
Сущность продукта:
@Entity(tableName = "products")
data class Product(
@ColumnInfo(name = "name") val name: String = "",
@ColumnInfo(name = "price") val price: Int = 0,
@ColumnInfo(name = "count") val count: Int = 0,
@ColumnInfo(name = "description") val description: String = "",
@ColumnInfo(name = "isPurchased") val isPurchased : Boolean = false
) {
@PrimaryKey var id: String = UUID.randomUUID().toString()
@ColumnInfo(name = "date") var date: Long = Date().time
}
Подобные запросы как удаление, вставка работают нормально. Подчиненный запрос должен найти идентификатор продукта и обновить все поля, но он не работает. Пожалуйста, не пишите о запросе вставки вместо обновления, это подвох.
Обновление: Метод обновления возвращает 0, и это означает, что он не работает, согласно документам он должен возвращать num обновленной записи:
Хотя этот метод обычно не требуется, вы можете вместо этого использовать метод, возвращающий значение типа int, указывающее количество строк, обновленных в базе данных.