Android Room определяет имя столбца в запросе во время выполнения - PullRequest
0 голосов
/ 28 июня 2018

Это моя Value структура таблицы

varName   value    timestamp    oneHour    oneDay    oneWeek
============================================================
varA      12.7     129387230    true       false     false
varB      32.0     129387230    true       true      false
varA      32.2     129387234    true       true      true
...

Как видите, каждая запись имеет один или несколько флагов, определяющих, используется ли эта запись на графике с соответствующим временным масштабом.

В моем Dao у меня есть запрос, чтобы получить все значения шкалы времени для переменной. Timescale это просто enum с oneHour, oneDay, oneWeek

@Query("SELECT * FROM Value WHERE varName = :varName AND [       ] ORDER BY timestamp ASC")
fun getByTimescale(varName: String, timescale: Timescale): Flowable<List<Value>>

В скобках я хочу сделать что-то вроде timescale.name = true, но это приведет к ошибке.

1 Ответ

0 голосов
/ 28 июня 2018

Изменение запроса во время выполнения будет невозможно, так как Room генерирует код во время сборки на основе запроса SQL для получения результата. Изменение запроса означает изменение реализации метода.

Этого можно добиться, создав 3 запроса, по одному для каждого значения перечисления. Затем во время выполнения решите, какой из 3 методов вам нужно вызвать.

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