我正在使用适用于Android的Room Persistence库,并尝试对布尔字段进行“更新”查询。
@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
}
与DELETE、INSERT类似的查询可以很好地工作。底层查询应该找到产品的id并更新所有字段,但它不起作用。请不要写INSERT QUERY而是UPDATE,这是一个肮脏的把戏。
**UPDATE:**UPDATE方法返回0,表示不工作,根据文档,应该返回更新记录的Num:
虽然通常不是必需的,但您可以让此方法返回一个int值,以指示数据库中更新的行数。
2条答案
按热度按时间3pvhb19x1#
你可以试试这个
3xiyfsfu2#
关于文档,它说你必须做这样的事情:
您还可以控制
onConflict
发生的情况。请注意,如果您不指定,默认情况下它是OnConflictStrategy.ABORT
,它回滚事务并且不执行任何操作。因此,您可能需要添加类似于@Update(onConflict = OnConflictStrategy.REPLACE)
的内容。