Android 如何使用Rxjava执行房间事务

Android 如何使用Rxjava执行房间事务,android,transactions,rx-java,android-room,Android,Transactions,Rx Java,Android Room,如何使用rxjava跨2个不同的DAO执行房间事务 我有这段代码,我想与Rxjava一起使用,但我需要它返回某种可观察的数据 @Transaction fun insertStoreWithPictures(store: Store, pictures: List<StorePicture>) { insertStore(store) insertPictures(pictures) } 我认为您可以使用RxJava的zip或combine操作符。它将从迭代器

如何使用rxjava跨2个不同的DAO执行房间事务

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

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

    insertStore(store)
    insertPictures(pictures)

}

我认为您可以使用
RxJava
zip
combine
操作符。它将从迭代器可观察源创建一个可观察源。

我认为您可以使用
zip
combine
操作符
RxJava
。它将从迭代器可观察源创建一个可观察源。

实现相同目标的最佳示例-

实现相同目标的最佳示例-

检查本页中的第二个示例:示例用于选择事务。我需要为使用2个不同DAO的insert执行一个事务。请检查本页中的第二个示例:example用于select事务。我需要为使用2个不同DAO的insert执行一个事务。如果事务中出现错误,zip运算符是否执行回滚?@Shura您的具体要求是什么?我的意思是,如果您询问在任何API调用中是否存在错误,是的,它将在公共错误处理程序回调中抛出错误。我的要求是进行数据库事务。如果其中一个操作出现错误,它应该回滚在此之前所做的所有数据库更改。zip保证了吗?或者它只是给出了一个错误,但对数据库的成功更改得到了维护?这是您需要在错误回调中实现的,我怀疑Rx会提供给您,如果事务中出现错误,zip操作员是否会进行回滚?@Shura您的具体要求是什么?我的意思是,如果您询问在任何API调用中是否存在错误,是的,它将在公共错误处理程序回调中抛出错误。我的要求是进行数据库事务。如果其中一个操作出现错误,它应该回滚在此之前所做的所有数据库更改。zip保证了吗?或者它只是给出了一个错误,但对数据库的成功更改得到了维护?这是您需要在错误回调中实现的,我怀疑Rx是否会提供给您
@Dao
abstract public class store {

@Insert
Single<Long> insert(store  entity);
}
@Dao
abstract public class storePicture {

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