Kotlin室SUM操作

eqzww0vc  于 2023-01-05  发布在  Kotlin
关注(0)|答案(1)|浏览(93)

我需要执行列求和操作,但我不知道我到底需要插入到fun getSumItem(): Flow<Cursor>中什么
这是我的刀

@Dao
interface Dao {
    @Insert
    fun InsertItem(item: Income)
    @Query("SELECT SUM(sum) AS value FROM income")
    fun  getSumItem(): Flow<Cursor>

}

这是我的table

@Entity(tableName = "income")
data class Income(
    @PrimaryKey(autoGenerate = true)
    var id: Int? = null,
    @ColumnInfo(name = "date")
    var date: String,
    @ColumnInfo(name = "type")
    var type: String,
    @ColumnInfo(name = "sum")
    var sum: Float,

)

我没有找到类似的例子和任何详细信息在互联网上。当我使用Cursor我得到这个错误:
Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). - android.database.Cursor
我在互联网上找到的所有其他选项也出现错误

xdyibdwo

xdyibdwo1#

当你输入SELECT SUM(sum) AS value FROM income时,Room处理的输出将是一个名为value的单列的Cursor,Room不知道如何提取这个值并从这个值构建Cursor对象。
Room期望从SQLite API生成的底层Cursor中提取数据,Room是一个封装器,并根据函数返回的对象传递数据(因此必须能够确定如何构建结果对象)。
由于Room提取单个值,因此您只需检索作为Float返回的值。

fun  getSumItem(): Flow<Float>

相关问题