【发布时间】:2022-06-15 04:58:17
【问题描述】:
在正常运行的应用删除无用的类和代码后会发生 Room Error。
最初,实体抛出了一个错误。
error: Cannot find setter for field.
private final long workoutId = 0L;
我不知道为什么在根本没有更改代码的Entity中出现错误,但是一次
我将val 更改为var 指的是answer here。
但随后又发生了另一个错误。
这是DAO 中发生的错误。
error: Not sure how to convert a Cursor to this method's return type (java.lang.Object).
public abstract java.lang.Object getWorkoutList(@org.jetbrains.annotations.NotNull()
对于类似情况,我还引用了 answers,但在我的情况下,这根本不能解决问题。
在那个答案中,删除suspend 并将其更改为List 或LiveData,但我使用了Coroutine 而不是suspend,我使用了LiveData。
哪个是问题??
实体
@Entity
data class Workout(
@PrimaryKey(autoGenerate = true)
var workoutId: Long = 0,
var title: String = "",
var memo: String = "",
)
锻炼道
@Dao
interface WorkoutDao {
@Query("SELECT * FROM Workout")
@Transaction
fun getWorkoutSetInfoList() : LiveData<List<WorkoutWithSets>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertWorkout(workout: Workout) : Long
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertSetInfoList(list: List<WorkoutSetInfo>)
@Insert
fun insertAll(list: List<Workout>)
@Delete
fun delete(detail: Workout)
@Update
fun update(list: List<Workout>)
}
【问题讨论】:
-
您的错误是针对问题中显示的代码中不存在的
getWorkoutList()函数。
标签: android android-room