Конечно, это вариант самоуверенный в том смысле, что он предполагает определенный архитектурный стиль. Тем не менее, он не делает предположений о внутренней базе данных. Даже без репозитория, экранирующего базу данных, вызов может быть сделан в базу данных путем передачи true везде - также без предположений относительно базовых данных.

даю приложение для Android, которое отображает список потенциальных совпадений для пользователя. Пользователь может щелкнуть один из них, чтобы понравиться пользователю, и я сохраняю все эти лайки локально.

Я могу написать запрос, чтобы получить список совпадений, как это:

@Query("SELECT * FROM match WHERE liked = :liked ORDER BY match DESC LIMIT :limit")
fun getMatches(limit: Int = 6, liked: Boolean = true): Flowable<List<Match>>

Я узнал, что это прекрасно работает. Однако я не предвижу сценарий, в котором я когда-либоliked в false, и поэтому мне любопытно, есть ли способ жестко закодировать мое логическое условие? Если я попробую:

@Query("SELECT * FROM match WHERE liked = true ORDER BY match DESC LIMIT :limit")

Я получаю следующую ошибку во время компиляции:

Error:(8, 0) Gradle: error: There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: true)

Как я могу жестко закодировать это логическое значение в строке запроса?

Я также попробовал:

Заключение условия в одинарные кавычки@Query("SELECT * FROM match WHERE liked = 'true' ORDER BY match DESC LIMIT :limit")

Ответы на вопрос(2)

Ваш ответ на вопрос