我有2个来自ROOM DB的查询:
@Query("SELECT * FROM basket_items")
Flowable<List<BasketItem>> getAll();
@Query("SELECT SUM(count*amount) FROM basket_items")
Flowable<Long> totalSum();
如何将这些查询合并为一个查询?以及将返回哪种类型的模型?
答案 0 :(得分:1)
“房间查询”可以返回POJO(而不是select sum(colvalue) from (
select
unnest(array['col1', 'col2', 'col3']) as colname,
unnest(array[col1, col2, col3]) as colvalue
from my_table) x
where colvalue <> 'Ab' and colvalue is not null
),因此您可以为DAO创建临时模型。
正如我在评论中已经问过的那样,我不知道您要达到什么目的(例如您想从这些查询中获得什么价值)。
但希望该示例可能会有所帮助:
YourDao.java
@Entity
其他答案
查询无法返回列表和总和。 SUM是汇总方法,您汇总列表。
因此,您可能要选择两个选项:
在查询中使用@Query("SELECT name AS nameItem, (count * amount) AS countItem FROM basket_items")
Flowable<List<CountedBasketItem>> getAllCounted();
static class CountedBasketItem {
String nameItem;
Long countItem;
}
或执行这两个Flowable并获得结果。
答案 1 :(得分:0)
您可以在 pojo 中创建字段 totalSum 并使用此查询
@Query("SELECT *,SUM(count*amount) AS totalSum FROM basket_items")
Flowable<List<BasketItem>> getAll();
你会得到所有表,字段 totalSum 是 SUM(count*amount)