假设我有一个实体用户 --
@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 的列上按降序创建索引?
可以像这样对 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]
)
]
)