sqlite 如何在androidx房间中按降序为列添加索引?

gfttwv5a  于 2023-10-23  发布在  SQLite
关注(0)|答案(1)|浏览(146)

假设我有一个实体用户

@Entity()
class Users(
    val firstName: String,
    val lastName: String
)

现在我想在这个实体(表)上创建一个复合索引,如下所示(firstName DESC,lastName DESC)。我可以用sqlite命令这样做--

CREATE INDEX index_Users_firstName_lastName ON Users(firstName DESC, lastName DESC)

但是我不能在@Entity注解中使用indices属性。我试过这么做

@Entity(indices = [Index("firstName DESC", "lastName DESC")])
class Users(
    val firstName: String,
    val lastName: String
)

但它会导致以下编译器错误-- error:实体中不存在索引中引用的firstName DESC。
是否可以在room中的列上按降序创建索引?

7eumitmz

7eumitmz1#

在Room的Entity annotation中定义索引列的排序顺序可以像这样:

** java **

@androidx.room.Entity(
        tableName = "Users",
        indices = {
                @Index(
                        value = {"firstName", "lastName"},
                        orders = {Index.Order.ASC, Index.Order.DESC}
                )
        }
)

Kotlin酒店

@androidx.room.Entity(
    tableName = "Users",
    indices = [
        Index(
            value = ["firstName", "lastName"],
            orders = [Index.Order.ASC, Index.Order.DESC]
        )
    ]
)

相关问题