Android Room:无法正常订购 [英] Android Room: Order By not working

查看:118
本文介绍了Android Room:无法正常订购的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用新的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:无法正常订购的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆