如何在androidx room的一列上按降序添加索引?

问题描述 投票:0回答:1

假设我有一个实体用户 --

@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 注释中的索引属性来执行此操作。我尝试这样做--

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

但是会导致以下编译器错误 -- error: 索引中引用的firstName DESC 在实体中不存在。

是否可以在 room 的列上按降序创建索引?

sqlite kotlin android-room
1个回答
0
投票

可以像这样对 Room 的

Entity
注释中的索引进行排序:

Java

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

科特林

@androidx.room.Entity(
    tableName = "Users",
    indices = [
        Index(
            value = ["firstName", "lastName"],
            orders = [Index.Order.ASC, Index.Order.DESC]
        )
    ]
)
© www.soinside.com 2019 - 2024. All rights reserved.