Android 房间 - 创建自定义索引

Android Room - Create custom index

我终于将我的数据库从 DBFlow 迁移到 Room。

但是,我对旧数据库所做的一些查询与我对 Room 的了解并不完全相符。所以在我的实体中我有/有这些电话:

"CREATE INDEX IF NOT EXISTS `idDeletedStartEndLocalIndex` ON `QUANTITY`(START_LOCAL, END_LOCAL DESC)"

我在 Room 中将其实现为

Index("START_LOCAL", "END_LOCAL")

但是如何在索引处添加 降序?我应该只写“END_LOCAL DESC”吗?这会按预期工作吗?

这个也一样

"CREATE UNIQUE INDEX IF NOT EXISTS `serverQtyId` ON QUANTITY(SERVER_QUANTITY_ID) WHERE SERVER_QUANTITY_ID > 0"

如何将 WHERE SERVER_QUANTITY_ID > 0 子句添加到房间的索引注释中?这可能吗?

好的,看起来没有太多办法解决这个问题。所以我手动进行了查询。

对于遇到相同问题的人,我的代码如下所示:

runBlocking(Dispatchers.IO){
   with (getInstance().openHelper.writableDatabase) {
       execSQL("CREATE INDEX IF NOT EXISTS `someIndexName` ON `QUANTITY`(...)")
       ...
   }
}

所以我所做的基本上是 获取数据库实例 及其 openHelper。从那里您可以获得可写数据库。然后它支持直接执行 SQL 查询。

所有这些都是 运行 在 IO 协程范围内,但这只是为了方便。