【问题标题】:How to perform a room transaction usin Rxjava如何使用 Rxjava 执行房间交易
【发布时间】:2020-05-29 17:32:03
【问题描述】:

如何使用 rxjava 跨 2 个不同的 DAO 进行房间交易?

我有这段代码,我想与 Rxjava 一起使用,但我需要它来返回某种可观察的

 @Transaction
fun insertStoreWithPictures(store: Store, pictures: List<StorePicture>) {

    insertStore(store)
    insertPictures(pictures)

}

商店DAO

@Dao
abstract public class store {

@Insert
Single<Long> insert(store  entity);
}

storePicture DAO

@Dao
abstract public class storePicture {

    @Insert
    Completable insert(storePicture... entity);
}

【问题讨论】:

标签: android transactions rx-java android-room


【解决方案1】:

我认为您可以使用RxJavazipcombine 运算符。它会从一个迭代器的 observable 源创建一个 observable。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 如果事务出现错误,zip算子会回滚吗?
    • @Shura 您到底有什么要求?我的意思是,如果您询问任何 API 调用是否有错误,是的,它会在常见的错误处理程序回调中抛出错误。
    • 我的要求是做一个数据库事务。如果其中一个操作出错,它应该回滚在此之前完成的所有数据库更改。 zip 能保证吗?或者它只是给出了一个错误,但对数据库的成功更改得到了维护?
    • 这是你需要在错误回调中实现的东西,我怀疑 Rx 会为你提供
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2012-08-30
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多