Tengo una clase de datos como esta.
@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 )Luego, en DAO tengo métodos para guardar y obtener como este
@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> } Estoy guardando una lista de Questions y luego recuperándolas. Entonces, cada vez que los recupero, obtengo la lista ordenada de acuerdo con la id , que es la clave principal.
Entonces, si estoy guardando preguntas con id:254 , id:23 , id:45 e id:92 , entonces lo estoy obteniendo así id:23 , id:45 , id:92 e id:254
Pero no necesito una lista ordenada como esa, necesito obtener los datos tal como se guardaron en la base de datos. Cualquier ayuda sería apreciada. Gracias.
Intente usar autoGenerate = true para la clave principal, por lo que creará un número PK en secuencia
Ver líneas a continuación
@PrimaryKey(autoGenerate = true)De modo que ahora su orden de inserción y recuperación será la misma
Puede agregar un campo de Date a su entidad Pregunta
@field:SerializedName("date") var date: Date? = null,y ordena tus entidades por fecha
@Query("SELECT * FROM Question ORDER BY date DESC")