Room DB меняет порядок пунктов при выполнении get - PullRequest
0 голосов
/ 27 сентября 2018

Существует абсолютно стандартный случай, когда я сохраняю предметы в моей комнате DB

Есть 4 предмета.После того, как я сохранил его с помощью Stetho, я вижу, что все они были сохранены в правильном порядке 1, 2, 3, 4, как и должно быть.

Затем, когда мне нужно получить их все

@Query("SELECT * FROM mytable WHERE name = :i AND state = :iS")
List<MyObj> getAll(String i,  String iS);

Я получаю такой заказ 1, 2, 4, 3

Почему?Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Нет никаких гарантий, что ваши данные вернутся в том же порядке.В SQL порядок не является неотъемлемым свойством набора данных.А Room - это абстракция поверх SQLite (движок SQL db).Вам необходимо заказать данные в соответствии с предложением.

0 голосов
/ 27 сентября 2018

вам нужно указать, каким должен быть порядок, либо вы используете первичный ключ / индексный ключ, например, если ваш шаблон сущности таблицы подобен этому

@Entity
class Mytable {

   @PrimaryKey(autoGenerate = true)
   var id: Int? = null
   ...
}

, вы можете использовать это для извлечения и упорядочения в соответствии споскольку он был вставлен

'SELECT * FROM mytable WHERE name = :i AND state = :iS ORDER BY id ASC'

или

'SELECT * FROM mytable WHERE name = :i AND state = :iS ORDER BY id DESC'

, и из того, что я вижу в вашем коде, причина того, что вы запрашиваете свои данные, вы можете использовать с помощьючто вы планируете архивировать и какую-то часть вашего кода.

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