【问题标题】:Unable to solve error: Type of the parameter must be a class annotated with @Entity or a collection/array of it无法解决错误:参数的类型必须是带有 @Entity 注释的类或其集合/数组
【发布时间】:2025-12-31 01:50:12
【问题描述】:

请检查是什么错误。提前致谢。

@Dao
interface FavDishDao {

    @Insert
    suspend fun insertFavDishDetails(favDish: FavDish)

   
    @Query("SELECT * FROM FAV_DISHES_TABLE ORDER BY ID")
    fun getAllDishesList(): Flow<List<FavDish>>

    @Update
    suspend fun updateFavDishDetails(favDish: FavDish)

    @Query("SELECT * FROM FAV_DISHES_TABLE WHERE favorite_dish = 1")
    fun getFavoriteDishesList(): Flow<List<FavDish>>
}

【问题讨论】:

  • 在您的问题中表现出更多的努力会很好。您发布的唯一内容是代码,所以下次请至少格式化它;)

标签: android kotlin android-room


【解决方案1】:

如果您已正确注释您的实体和实例化数据库,那么这实际上与我遇到的相同问题只是转到您的 build.gradle(app) 文件,您可以在依赖项中看到警告(以黄色突出显示)。 按 ctrl+alt+shift+s(基本上是打开选项)然后转到依赖项(如下图所示),然后对所有依赖项逐一检查详细信息部分中是否有更新变量选项,如果是点击那个。 完成所有操作后,单击应用,然后单击确定,这将同步您的 gradle。

现在尝试运行您的应用。

PS:-正如其他人建议的那样,下次尝试对您的问题进行更多描述。

【讨论】:

  • 感谢这对我有用。我的房间版本不是最新的
  • 为我工作,谢谢。
【解决方案2】:

我能够解决将 Kotlin 版本降级到“1.4.32”的类似问题

【讨论】:

  • 我在将 kotlin 更新到 1.6.0 时遇到了同样的问题
【解决方案3】:

您必须使用 @Entity(tableName="FAV_DISHES_TABLE") 注释您的数据类 FavDish,以便在您的 Room 数据库中为该数据类创建一个表。

【讨论】:

    最近更新 更多