Android房间@关系左连接

Android房间@关系左连接,android,android-room,android-room-relation,Android,Android Room,Android Room Relation,假设我有两个实体,问题和答案,它们有一对多的关系,每个问题可能有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 que

假设我有两个实体,问题和答案,它们有一对多的关系,每个问题可能有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对象列表,其中包含所有问题和只有一个用户ID的答案,如果该用户尚未回答问题,则为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实现这个查询?

我在遵循了某人的答案后遇到了同样的问题,这个答案似乎是一个解决方案。这就好像关系完全忽略了查询顺序,而是与之分离。在遵循某人的答案后,我遇到了同样的问题,这似乎是一个解决方案。这就好像该关系完全忽略了查询顺序,而是与之分开运行。