【发布时间】:2018-09-01 11:51:56
【问题描述】:
我想在我的 dao 对象中有这样的方法
@Query("SELECT c.name, sum(p.value) FROM payments p, paymentCategories c WHERE p.categoryId = c.id GROUP BY c.name")
fun getCategoryStats(): Map<String, Float>
但我得到了错误
错误:不确定如何将 Cursor 转换为此方法的返回类型 公共抽象 java.util.Map
是否可以将其更改为工作版本?
所以返回的类型可以不同,但主要条件是
- db 中只能有一个查询
- 我想避免额外的代码,比如只为此方法创建额外的数据结构
【问题讨论】:
-
您也许可以创建一个从
Cursor到Map的TypeConverter并将其注册到您的 DAO,尽管我没有尝试过这种特殊情况(从 DAO 转换返回值方法)。不过,错误消息表明可以在此处使用TypeConverter。 -
很遗憾没有内置支持。当您汇总数据以获取所需信息时,这种情况可能并不罕见。还是谢谢)
-
无论如何我都无法使用 Cursor to Map\Pair 转换器。要么不支持,要么我错过了一个简单的观点。作为解决方案,我创建了自己的 Tuple 对象,并返回它的列表。
标签: android kotlin android-room