问题描述
我正在使用新的Android ORM Room.而且我遇到了以下问题,将ORDER BY与参数一起使用的查询不起作用.
I am using the new Android ORM Room.And I faced the following issue, queries that use ORDER BY with arguments don't work.
如果我想使用从参数填充的字段用于ORDER BY,则无法使用.它只是什么都没排序.
If I want to use the field populated from a parameter for ORDER BY it does not work. It just doesn't sort anything.
@Query("SELECT * FROM User ORDER BY :orderBY ASC")
List<User> sortedFind(String orderBY);
但是,当我将ORDER BY列直接放在查询中以对结果进行排序时,它会按预期工作.
But, when I put the ORDER BY column directly in the query to sort the results, then it works as expected.
@Query("SELECT * FROM User ORDER BY name ASC")
List<User> sortedFind();
这是Android Room中的错误,还是我做错了什么?
Is it a bug on Android Room, or am I doing something wrong?
推荐答案
您应使用@RawQuery
批注和SupportSQLiteQuery
类进行运行时查询
You should use @RawQuery
annotation and SupportSQLiteQuery
class for runtime query
在道:
@RawQuery
List<Objects> runtimeQuery(SupportSQLiteQuery sortQuery);
要获取数据:
String query ="SELECT * FROM User ORDER BY " + targetField + " ASC";
List<Objects> users = appDatabase.daoUser().runtimeQuery(new SimpleSQLiteQuery(query));
这篇关于Android Room:无法正常订购的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!