#android #database #entity #android-room #r-tree
Вопрос:
Я хотел бы продолжать использовать Room, но я не вижу способа создать объект, который использует rtree. Есть аннотации @FTS3 и @FTS4, но для RTree я ничего не вижу. Возможно ли создать объект с помощью R-дерева?
Я пытался выполнить миграцию с помощью этого кода, но у меня все равно не было бы места для объекта…
val TABLE_CREATE = "CREATE VIRTUAL TABLE if not exists my_table_name USING rtree("
"row_id," // Primary key
"minX, maxX," // Minimum and maximum X coordinate
"minY, maxY" // Minimum and maximum Y coordinate
");"
db.execSQL(TABLE_CREATE)
Ответ №1:
Я считаю, что в настоящее время невозможно использовать RTree в номере.
Для использования RTree вам понадобится дистрибутив SQLite, который скомпилирован с параметром-DSQLITE_ENABLE_RTREE=1.
Комната-это абстрактный слой над SQLite, который распространяется вместе с устройством Android и, я полагаю, не поддерживает RTree (если бы это было так, я бы предположил, что тогда будет доступна аннотация @RTree).
например, на API 31, если вы попытаетесь использовать, вы получите :-
E/SQLiteLog: (1) statement aborts at 28: [CREATE VIRTUAL TABLE rtree1 USING rtree(id,minX,maxX,minY,maxY);] no such module: rtree
т. е. rtree не включен.