【问题标题】:Can't update an Entity in Room Kotlin无法更新 Room Kotlin 中的实体
【发布时间】:2021-02-09 23:53:06
【问题描述】:

我需要更新整个实体,所以我尝试使用 @Update 但它不起作用,并且使用 UPDATE 查询有太多字段。那我该怎么办?

@Update
updatePackage(item: Package)

@Query("UPDATE PackageEntity SET weight = :weight ...[[TOO MANY FIELDS]] WHERE id = :id")

    @Entity
    data class PackageEntity(
    @PrimaryKey(autoGenerate = true) var id: Int? = -1,
    @ColumnInfo(name = "weight") var weight: Double = 0.0,
    @ColumnInfo(name = "unitType") var unitType: Options.UnitTypes = Options.UnitTypes.MT,
    @ColumnInfo(name = "high") var high: Number = 0.0,
    @ColumnInfo(name = "length") var length: Number = 0.0,
    @ColumnInfo(name = "wide") var wide: Number = 0.0,
    @ColumnInfo(name = "quantity") var quantity: Int = 0,
    @ColumnInfo(name = "description") var description: String = "",
    @ColumnInfo(name = "loadType") var loadType: Options.LoadTypes = Options.LoadTypes.GENERAL,
    @ColumnInfo(name = "cityOrigin") var cityOrigin: SimpleClass = SimpleClass(),
    @ColumnInfo(name = "cityDestine") var cityDestine: SimpleClass = SimpleClass(),
    @ColumnInfo(name = "pickup")var pickup: Boolean = true,
    @ColumnInfo(name = "deliver")var deliver: Boolean = true
    )

【问题讨论】:

    标签: android android-studio kotlin android-room


    【解决方案1】:

    嗯,这很奇怪......你可以尝试类似的东西

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun updatePackage(item: Package)
    

    【讨论】:

    • 插入一个具有相同 ID 的新文件?你能发布包类吗?
    • 是的,我已经发布了一个编辑,只有更新方法不起作用,因为插入、删除和查询都是正常的
    • 尝试将PK更改为@PrimaryKey(autoGenerate = true) val id: Long并尝试使用@Update(onConflict = OnConflictStrategy.REPLACE)。不工作很奇怪
    猜你喜欢
    • 2022-06-26
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    相关资源
    最近更新 更多