#android #kotlin #android-sqlite #android-room
#Android #kotlin #android-sqlite #android-room
Вопрос:
У меня есть два столбца ( name
и description
) в виртуальной таблице FTS, и я хочу расставить name
приоритеты для столбца в FTS с помощью matchinfo
функции, но с room в Android я получаю следующую ошибку:
Ошибка при извлечении данных из таблицы.: невозможно использовать функцию matchinfo в запрошенном контексте (код 1 SQLITE_ERROR)
Вот мой запрос:
@Query("""select workout_cache.id, workout_cache.met, workout_cache.name, workout_cache.workoutDescription, matchinfo(workout_cache_fts, 'pcs') as mi
from workout_cache join workout_cache_fts on workout_cache.id = workout_cache_fts.id
where workout_cache_fts match :text group by workout_cache.id""")
abstract suspend fun query(text: String): List<WorkoutCacheEntityWithMatchInfo>
Мой WorkoutCacheEntityWithMatchInfo
класс
class WorkoutCacheEntityWithMatchInfo(
@Embedded
val workout: WorkoutCacheEntity,
@ColumnInfo(name = "mi")
val matchInfo: ByteArray
)
ОБНОВЛЕНИЕ: он работает нормально, когда я не использую предложение join.
Ответ №1:
Это глупо. Я просто удалил group by
предложение, и оно сработало.
Здесь обновлен Dao:
@Query("""select workout_cache.id, workout_cache.met, workout_cache.name, workout_cache.workoutDescription, matchinfo(workout_cache_fts, 'pcs') as mi
from workout_cache join workout_cache_fts on workout_cache.id = workout_cache_fts.id
where workout_cache_fts match :text""")
abstract suspend fun query(text: String): List<WorkoutCacheEntityWithMatchInfo>
Комментарии:
1. Это сработало и для меня на iOS с использованием Swift.SQLLite. В зависимости от параметра match запрос работал с
group by
предложением, что странно. — Есть идеи относительно того, почему это сработало?