Android中的房间根据主键自动排序

the*_*del 5 sqlite android kotlin android-room

我有一个这样的数据类

@Entity
data class Question(

        @field:SerializedName("question")
        var question: String? = null,

        @field:SerializedName("answers")
        var answers: ArrayList<String?>? = null,

        @field:SerializedName("id")
        @PrimaryKey
        var id: Int? = null
)
Run Code Online (Sandbox Code Playgroud)

然后在 DAO 中,我有这样的保存和获取方法

    @Dao
interface QnADao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun saveQuestion(questions:Question)

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun saveAllQuestions(questions: List<Question?>?)


    @Query("SELECT * from Question")
    fun getAllQnA():List<Question>


}
Run Code Online (Sandbox Code Playgroud)

我正在保存一个列表,Questions然后在检索它们。因此,每当我检索它们时,我都会根据id主键对列表进行排序。

所以,如果我节省了疑问id:254id:23id:45id:92然后我得到它像这样id:23id:45id:92id:254

但是我不需要这样的排序列表,我需要获取保存在数据库中的数据。任何帮助,将不胜感激。谢谢。

Jay*_*wak 4

尝试使用 autoGenerate = true 作为主键,这样它将按顺序创建 PK 号

参见下面几行

@PrimaryKey(autoGenerate = true)
Run Code Online (Sandbox Code Playgroud)

这样现在您的插入和检索顺序将相同