Android 与房间数据库的事务处理
我对房间数据库中的事务有一个问题。是否可以在DAO对象之外使用@Transaction注释 我有复杂的对象要保存,所以我通过一个从不同DAO调用许多方法的管理器来保存。但我想在任何方法失败时回滚事务 它与Android 与房间数据库的事务处理,android,android-sqlite,android-architecture-components,Android,Android Sqlite,Android Architecture Components,我对房间数据库中的事务有一个问题。是否可以在DAO对象之外使用@Transaction注释 我有复杂的对象要保存,所以我通过一个从不同DAO调用许多方法的管理器来保存。但我想在任何方法失败时回滚事务 它与 roomDB.runInTransaction { dao1.insert(object.object1) dao2.insert(object.object2) dao3.update(objec.object3) } 我面临的第二个问题不是闭合游标。有时我会遇到这样的例外: W/SQL
roomDB.runInTransaction {
dao1.insert(object.object1)
dao2.insert(object.object2)
dao3.update(objec.object3)
}
我面临的第二个问题不是闭合游标。有时我会遇到这样的例外:
W/SQLiteCompiledSql: Releasing statement in a finalizer. Please ensure that you explicitly call close() on your cursor: DELETE FROM tableName WHERE status IN ( ?,? )
net.sqlcipher.database.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
我正在使用的示例方法:
@TypeConverters(NameConverter::class)
@Query("UPDATE tableName SET status = :status, last_update_date = :updateDate , finish_date = :finishDate, problem_reason = :problemReason WHERE id = :id")
fun updateStatus(id: Long, status: WorkerStatus, updateDate: Long, finishDate: Long?, problemReason: String?)
是否需要向方法添加其他注释以关闭光标
谢谢你的建议;)