我需要执行列求和操作,但我不知道我到底需要插入到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
我在互联网上找到的所有其他选项也出现错误
1条答案
按热度按时间xdyibdwo1#
当你输入
SELECT SUM(sum) AS value FROM income
时,Room处理的输出将是一个名为value
的单列的Cursor,Room不知道如何提取这个值并从这个值构建Cursor对象。Room期望从SQLite API生成的底层Cursor中提取数据,Room是一个封装器,并根据函数返回的对象传递数据(因此必须能够确定如何构建结果对象)。
由于Room提取单个值,因此您只需检索作为Float返回的值。