【问题标题】:Room Transaction rollback or cancel房间交易回滚或取消
【发布时间】:2019-08-06 17:17:24
【问题描述】:

Room 在@Transaction 中是否默认使用回滚?

它是否只取消@Transaction 内的下一个查询而不回滚?

它对错误的实际作用是什么?

【问题讨论】:

    标签: android android-room android-jetpack


    【解决方案1】:

    我假设您指的是带有 @Transaction 注释的已实现方法,例如:

    @Transaction
    public void transferMoney(String accountA, String accountB, int amount) {
      updateMoney(accountA, -amount);
      updateMoney(accountB, +amount);
    }
    

    Room 在@Transaction 中是否默认使用回滚?

    是的,如果在带有 @Transaction 注释的方法中抛出异常,那么 Room 将执行 ROLLBACK TRANSACTION

    它是否只取消@Transaction 中的下一个查询而不回滚?

    它取消该方法中的每个后续查询,并将该方法中任何其他查询所做的任何更改回滚到故障点。

    它对错误的实际作用是什么?

    它回滚事务。


    如果你指的是@Query注解的方法也用@Transaction注解,那么这些是只读查询,所以实际上没有什么可以回滚,但是,当结果数据很大或返回数据时有一个@Relation 那么数据是有保证的。见:https://developer.android.com/reference/android/arch/persistence/room/Transaction

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 2012-08-30
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      相关资源
      最近更新 更多