#android #sqlite #kotlin #android-room
#Android #sqlite #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
)
Затем в 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
Но мне не нужен подобный отсортированный список, мне нужно получить данные в том виде, в каком они были сохранены в базе данных. Буду признателен за любую помощь. Спасибо.
Комментарии:
1. Вы нашли какое-либо решение, кроме добавления другого столбца в качестве даты?
Ответ №1:
Попробуйте использовать AutoGenerate = true для первичного ключа, чтобы создать номер PK в последовательности
Смотрите строки ниже
@PrimaryKey(autoGenerate = true)
Так что теперь ваш порядок вставки и повторного поиска будет таким же
Ответ №2:
Вы можете добавить Date
поле к вашему объекту вопроса
@field:SerializedName("date")
var date: Date? = null,
и упорядочивайте свои объекты по дате
@Query("SELECT * FROM Question ORDER BY date DESC")