У меня есть база данных Room, использующая Dao для обработки запросов et c. Я использую функцию stati c (не действующие данные) для получения результатов с помощью запроса, все работает хорошо, когда я вручную жестко кодирую значения и столбцы Order By, как показано ниже, однако при передаче параметров в Dao для выполнения сортировки Order By возвращается к значениям по умолчанию (столбец order by id) и не извлекает результаты на основе переданного параметра сортировки
Жестко запрограммированный пример Dao работает, результаты сортируются по AS C или DES C
@Query("SELECT * FROM cameras WHERE suburb LIKE '%' || :suburb || '%' AND postcode LIKE '%' || :postcode || '%' ORDER BY direction ASC LIMIT :limit OFFSET :offset ")
fun getCamerasViaStatic(suburb: String?, postcode: String?, limit: Int?, offset: Int?): List<CamerasModel>
//and results retrieved in fragment using
CamerasApplicationDatabase.getInstance(context!!).CamerasDao().getCamerasViaStatic("", "", limit, offset)
Параметр сортировки, переданный в пример Dao не работает, результаты сортируются по умолчанию, сортировка
@Query("SELECT * FROM cameras WHERE suburb LIKE '%' || :suburb || '%' AND postcode LIKE '%' || :postcode || '%' ORDER BY :sort_by ASC LIMIT :limit OFFSET :offset ")
fun getCamerasViaStatic(suburb: String?, postcode: String?, limit: Int?, offset: Int?, sort_by: String): List<CamerasModel>
//and results retrieved in fragment using
var sort_by = "my_column_to_sort_by"
CamerasApplicationDatabase.getInstance(context!!).CamerasDao().getCamerasViaStatic("", "", limit, offset, sort_by)
Не знаю, почему это дополнение не работает, учитывая другие переданные параметры все еще работают в обоих примерах, проблема также в том, что позже я передаю параметр ASC / DES C и использую его в CASE WHEN (пример ниже)
ORDER BY CASE WHEN :sort = 1 THEN :sort_by END ASC, CASE WHEN :sort = 0 THEN :sort_by END DESC