Комната автоматически сортируется на основе первичного ключа в Android - PullRequest
0 голосов
/ 14 марта 2019

У меня есть такой класс данных

@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
)

Тогда в 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>


}

Я сохраняю список Questions, а затем получаю их. Поэтому, когда я их получаю, список сортируется в соответствии с id, который является первичным ключом.

Так что, если я сохраняю вопросы с id:254, id:23, id:45 и id:92, я получаю это так id:23, id:45, id:92 и id:254

Но мне не нужен подобный отсортированный список, мне нужно получить данные, которые были сохранены в базе данных. Любая помощь будет оценена. Спасибо.

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Вы можете добавить поле Date к своей сущности Вопроса

@field:SerializedName("date")
var date: Date? = null,

и упорядочить свои сущности по дате

@Query("SELECT * FROM Question ORDER BY date DESC")
1 голос
/ 14 марта 2019

Попробуйте использовать autoGenerate = true для первичного ключа, чтобы он создавал номер PK в последовательности

См. Строки ниже

@PrimaryKey(autoGenerate = true)

Так что теперь ваш порядок вставки и получения будет таким же

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...