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 协程范围内,但这只是为了方便。
我终于将我的数据库从 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 协程范围内,但这只是为了方便。