当前位置: 首页 > 知识库问答 >
问题:

通过DAO方法返回映射对象

荆亦
2023-03-14

我希望在我的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>

但我得到了错误

错误:不确定如何将游标转换为此方法的返回类型public abstract java。util。地图

是否可以将其更改为工作版本?

因此,返回的类型可能不同,但主要条件是

  1. 数据库中只能有一个查询
  2. 我希望避免额外的代码,比如只为这个方法创建额外的数据结构

共有1个答案

张毅
2023-03-14

虽然我不认为这可以在道中完成,但在使用转换查询存储库或viewModel中的LiveData(或您查询列表的任何地方)时可以很容易地完成。因为我不知道你的数据名,所以我使用了虚构的数据名:

val categoryStatsMap: LiveData<Map<String, Float>> = 
    Transformations.map(
        database.categoryStatsDao.getCategoryStats()) {it ->
            it.map {it.key to it.value}.toMap()
}

'它。“键”和“它”。“值”是实体对象中要用作。。。映射中的键和值对。转换为您提供了一个基于另一个活动数据对象的活动数据对象。我不知道开销是多少,但我想它不应该太大。

 类似资料:
  • 我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!

  • 我正在从React中的外部api接收数据 我有一个目标 我试图通过它进行映射,以便能够渲染数据,即它在屏幕上显示的“bitfinex:1.2、blockfi:2.3等” 但是我得到了一个错误,说它不是一个函数。 我做错了什么?

  • 问题内容: 我有两个C#类 和 在dbContext调用中使用它,以通过EF5映射数据库中的返回对象 我遇到的问题是,即使返回了地址数据,我似乎也无法获得映射的地址对象。searchResult映射的其他属性很好。 问题答案: SqlQuery不支持 您应该做的是:

  • 问题内容: 我有一个对象,我想知道它的返回类型是否为。 我已经检查了Javadocs,并且有一个返回Class对象的方法。问题是,如果方法无效,他们不会说返回类型是什么。 谢谢! 问题答案: 快速样本:

  • 问题内容: 我对Java没有太多的经验。我不确定这个问题是否很愚蠢,但是我需要从Firebase实时数据库中获取一个用户名,并通过此方法返回该名称。因此,我想出了如何获得该值,但是我不明白如何通过此方法返回它。最好的方法是什么? 问题答案: 这是异步Web API的经典问题。您现在无法返回尚未加载的内容。换句话说,您不能简单地创建一个全局变量并在onDataChange()方法外部使用它,因为它将

  • 我想询问一个人,并得到以下回应: 但在需要时,我还想包含字段,并获得如下内容: 但是,我得到的只是手机ID,就像这样: 这是两个有问题的领域: