我有一个复杂关系的查询。
data class GameWithHouseworkResult(
@Embedded val game:GameClass,
@Relation(
entity = GameHouseworkResult::class,
parentColumn = "gameId",
entityColumn = "houseworkId" ,
associateBy = Junction(value=GameHouseworkResult::class)
)
val houseworkAndResult: List<HouseworkAndResult>
)
我有 3 个实体和一个额外的类
@Entity
class GameClass(
@PrimaryKey(autoGenerate = true)
var gameId: Int = 0,
val mainPlayer:String,
var secondPlayer:String=""
}
@Entity
data class HouseworkClass(
@PrimaryKey
val houseworkId: Int,
val name:String,
val score:Int
) {
}
@Entity(primaryKeys = ["gameId", "houseworkId"])
class GameHouseworkResult(
var gameId: Long,
val houseworkId:Long,
val userToken:String,
val isDone:Boolean?= null) {
}
data class HouseworkAndResult(
@Embedded val gameHouseworkResult:GameHouseworkResult,
@Relation(
parentColumn = "houseworkId",
entityColumn = "houseworkId"
)
val housework: HouseworkClass
)
GameHouseworkResult 是一个 binder 类,它包含以下数据
@Transaction
@Query("SELECT * FROM GameClass where gameId=:id")
suspend fun getGameWithHouseworkResult(id:Long): GameWithHouseworkResult
当我用 发送请求时gameId = 26
,我应该得到一个包含五个元素的列表(houseworkAndResult),但我得到一个包含 10 个元素的列表,每个元素都这么说gameId = 26
。这很可能是由于相同的 houseworkId,但我不明白我在制定关系时哪里出错了。请帮我!