U kunt geen bindvariabelen (parameters) gebruiken om naar kolommen in de ORDER BY-component te verwijzen. U kunt de bindvariabele echter in een uitdrukking als volgt gebruiken:
@Query("select * from coin ORDER BY
CASE :order
WHEN 'percent_change_24h' THEN percent_change_24h
WHEN 'other_column_name' THEN other_column_name
END asc limit :numberOfCoins")
fun getAllTop(order: String, numberOfCoins: Int): Flowable<List<CoinDB>>
U moet een afzonderlijke WHEN-component toevoegen aan de CASE-instructie voor elke kolom/expressie waarop u wilt sorteren, en u moet mogelijk een ELSE-component toevoegen voor de situaties waarin de :order bind-variabele niet overeenkomt met een van uw standaardkoffers.
De beperking op bindvariabelen geldt ook voor de waar-clausule en de projectie (selecteer lijst). Bindvariabelen hebben hun eigen waarden in uw voorbeelden String of Int voor respectievelijk :order en :numberOfCoins.