我想对我的数据库进行以下查询:
SELECT type, COUNT(*) FROM offerings GROUP BY type
Run Code Online (Sandbox Code Playgroud)
此查询适用于 Sqlite 浏览器。现在我想在我的中使用这个查询Dao
:
@Query("SELECT type, COUNT(*) FROM offerings GROUP BY type")
LiveData<Map<String, Integer>> getOfferingsGroupedByType();
Run Code Online (Sandbox Code Playgroud)
但我收到错误:...不确定如何将游标转换为该方法的返回类型
如何查询包含 2 列的表?--> 即 [type, count(type)] ?
步骤#1:为计数命名:SELECT type, COUNT(*) AS count FROM offerings GROUP BY type
步骤#2:创建一个具有合适字段的 Java 类:
public class Thingy {
public String type;
public int count;
}
Run Code Online (Sandbox Code Playgroud)
步骤#3:让 DAO 方法的返回类型使用该类:
@Query("SELECT type, COUNT(*) FROM offerings GROUP BY type")
LiveData<List<Thingy>> getOfferingsGroupedByType();
Run Code Online (Sandbox Code Playgroud)
我不记得 Room 支持返回 a Map
,因此您需要自己处理该方面,无论是在观察者中还是通过MediatorLiveData
包装LiveData
从 DAO 获得的数据并进行转换。
归档时间: |
|
查看次数: |
5362 次 |
最近记录: |