android - 列出所有基于外键的数据 android room
问题描述
我用谷歌搜索了我的问题,但我还找不到答案。
我想得到所有最喜欢的饭菜,下面是代码和我尝试过的。
结果是我只得到一顿饭,即使 dbfavoritemeal 中有 3 个数据。
预期的结果是,我将根据 dbfavoritemeal 中的所有 mealid 获得所有膳食。
请指导我
我有一个膳食课
@Entity
data class DbMeal(
@PrimaryKey val id: Long,
val name: String,
val thumbnailUrl: String,
val category: String,
val instructions: String = "",
) {
然后我有最喜欢的课
@Entity(
foreignKeys = [
ForeignKey(
entity = DbMeal::class,
parentColumns = ["id"],
childColumns = ["mealId"],
onDelete = ForeignKey.CASCADE
)],
indices = [Index(
value = ["mealId"],
unique = true
)]
)
data class DbFavoriteMeal(
@PrimaryKey
val mealId: Long
)
我尝试过的是在 DAO
@Query("select * from dbMeal where id = (select mealId from dbfavoritemeal)")
suspend fun getAllFavoriteDbMeal(): List<DbMeal>
解决方案
你可以改变你的DAO
@Query("select * from dbMeal where id in (select mealId from dbfavoritemeal)")
suspend fun getAllFavoriteDbMeal(): List<DbMeal>
或者您可以将 isFavorite 参数添加到您的实体。
@Entity
data class DbMeal(
@PrimaryKey val id: Long,
val name: String,
val thumbnailUrl: String,
val category: String,
val instructions: String = "",
val isFavorite: Boolean = false,
)
你的 DAO 应该看起来像
@Query("select * from dbMeal where isFavorite = 1")
suspend fun getAllFavoriteDbMeal(): List<DbMeal>
推荐阅读
- python - Python中的字符串操作
- html - 是否有一个 HTML 元素属性可以提供该元素在文档树中的级别?
- testing - 多种环境
- docker - 尝试登录 acr 时获得未经授权的访问
- javascript - 如何将自定义 Memory 对象传递给 WebAssembly?
- flutter - 在flutter中打印并保存已安装应用程序列表的数据
- reactjs - 我在 React JS 中导入时遇到问题
- sql-server - partition_id 和 partition_number 之间的区别
- javascript - 如何解决 chrome 中手风琴滚动的问题?
- javascript - React Native,所有项目的状态更改而不是单击的项目