bad*_*0me 5 android kotlin android-room
我一直在研究将Room数据库与Kotlin集成的新项目,但遇到了一些问题。我有一个Category实体,其中包含Question实体的列表。问题实体本身包含答案实体的列表。我想查询数据库,并获取包含问题及其答案的所有类别。使用解决方案,我可以返回仅包含第一类的列表。如果我将其更改为Flowable调用,它将返回相同的内容,但onNext方法会触发多次,最终会提取所有类别(每个类别在列表中),但我想一次获取所有类别。到目前为止,我所做的是:
实体:
@Entity(tableName = TABLE_CATEGORIES)
data class Category (
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var name: String? = ""
)
@Entity(tableName = TABLE_QUESTIONS)
data class Question (
var text: String? = "",
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var categoryId: Int? = 0,
var typeId: Int? = 0,
var extraData: String? = "",
@Ignore
var answers: List<Answer>
)
@Entity(tableName = TABLE_ANSWERS)
data class Answer (
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var text: String? = "",
var isCorrect: Boolean? = false,
var questionId: Int = 0
)
Run Code Online (Sandbox Code Playgroud)
关系类:
class QuestionAnswersJoin {
@Embedded
var question: Question = Question()
@Relation(parentColumn = "id", entityColumn = "questionId")
var answers: List<Answer> = ArrayList()
}
class CategoryQuestionsAnswersJoin {
@Embedded
var category: Category = Category()
@Relation(parentColumn = "id", entityColumn = "categoryId", entity = Question::class)
var questionsAnswers: List<QuestionAnswersJoin> = ArrayList()
}
Run Code Online (Sandbox Code Playgroud)
查询:
@Transaction
@Query("SELECT * FROM $TABLE_CATEGORIES")
fun getCategories() : Single<List<CategoryQuestionsAnswersJoin>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |