代码之家  ›  专栏  ›  技术社区  ›  Sirop4ik

当执行get时,房间DB正在更改项目的顺序

  •  1
  • Sirop4ik  · 技术社区  · 7 年前

    有绝对标准的情况下,我保存在我的房间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 回复  |  直到 7 年前
        1
  •  2
  •   varunkr    7 年前

        2
  •  1
  •   Ayejuni Ilemobayo Kings RajaReddy PolamReddy    7 年前

    您需要指定排序方式,要么使用主键/索引键,例如,如果您的表实体模板是这样的

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

        3
  •  0
  •   quealegriamasalegre    5 年前

    我只是遇到了一个类似的问题,并且弄清楚了到底发生了什么。

    我想创建两个相同的表,所以我只是扩展了一个现有的类,并将实体注释添加到扩展类中,由于某些原因,只有扩展实体的模式有一列的顺序错误。

    当我看到你的问题的时候,我突然想到了。也许在您的实体中,类3是唯一的私有变量,因此被降级到最后