Почему Android Room @Query LIKE не возвращает данные, о которых известно, что они существуют - PullRequest
2 голосов
/ 14 февраля 2020

Моя проблема : Я не уверен, почему этот Android Запрос комнаты не возвращает результаты. Я думал, что понял правильное кодирование, и это кажется довольно простым. Если я передаю этот же запрос непосредственно в ту же базу данных с помощью SQLiteStudio, я получаю результаты.

Код вызова (я жестко закодировал строку 'true' для его проверки):

List<Integer> tableIDs = researchDatabase.getCommentsDao().customSearchCommentsTable("truth");

Код DAO (содержится в CommentsDao):

@Query("SELECT CommentID FROM Comments WHERE Comment LIKE :value")
List<Integer> customSearchCommentsTable(String value);

Что я сделал : я новичок в Android Room, но я использовал все примеры и уроки Android Разработчики (developer. android .com) и рассмотрели и применили много сообщений здесь в stackoverflow, тесно связанных, но я не могу получить никаких результатов для возврата. Когда я шагаю по коду, фактический код комнаты Android, кажется, не связывает переменную строку с оператором, хотя я вижу, что строка аргумента идентифицируется и передается правильно, что не является кодом, который я написал, или по крайней мере, я никогда не вижу результирующую строку привязки с моими переменными данными, я вижу только это:

ВЫБРАТЬ CommentID из комментариев, ГДЕ комментарий нравится?

Что мой цель - : на самом деле это первый шаг к созданию запроса для обработки запроса типа LIKE, аналогичного этому, который, я думаю, потребует настройки @RawQuery. Прямо сейчас я не могу заставить эту простую вещь работать.

Что происходит в оболочке @Query: я понимаю, что могу быть наивным и ошибочным, но ниже я вижу, что аргумент и утверждение оба пропущены, но он не выглядит так, как будто «_statement.bindString» фактически связывает «: значение» («истина») с оператором и возвращает 0 результатов.

Room Query Annotation code

1 Ответ

0 голосов
/ 10 марта 2020

Это решение, предоставленное командой разработчиков Android Room:

@Query("SELECT CommentID FROM Comments WHERE Comment LIKE '%' || :value || '%'")
List<Integer> customSearchCommentsTable(String value);

Ирония в том, что команде разработчиков не удалось заставить работать приведенный пример кода. К тому времени, когда они ответили, я уже создал обходной путь, используя метод @RawQuery для создания правильного синтаксиса SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...