Android 房间@Relation 左加入

2024-03-11

假设我有两个实体,问题和答案,它们具有一对多关系,每个问题可能有 0..n 个答案。它们定义为:

@Entity(tableName="questions")
data class Question (
  @PrimaryKey
  val id: Long,
  val questionText: String
)

@Entity(tableName="answers")
data class Answer (
  @PrimaryKey
  val id: Long,
  val questionId: Long,
  val userId: Long,
  val answerText: String
)

data class QuestWithAns(
  @Embeded
  val question: Question,
  @Relation(parentColumn = "id", entityColumn = "questionId", entity = Answer::class)
  val answer: Answer?
)

我想查询数据库并获取列表QuestWithAns包含所有问题且只有一个答案的对象userId如果该用户尚未回答问题,则返回 null。我尝试在 DAO 对象中实现此查询,如下所示:

@Dao
abstract class QuestionDAO {

  @Query("SELECT * FROM questions AS quest LEFT OUTER JOIN (SELECT * FROM answers WHERE userid=:userId) AS ans ON quest.id = ans.questionId")
  abstract fun getQuestWithAnsByUser(userId: Long): LiveData<List<QuestWithAns>>
}

但对于该用户尚未回答的问题,room 将返回任何其他用户的最后一个答案,而不是 null。

谁能帮我找出我做错了什么?有没有办法用@Relation来实现这个查询?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 房间@Relation 左加入 的相关文章

随机推荐