Android 房间事务回滚或取消

Android 房间事务回滚或取消,android,android-room,android-jetpack,Android,Android Room,Android Jetpack,在@Transaction中,文件室是否使用回滚作为默认值 它是否只取消@Transaction中的下一个查询而不回滚 它在出错时实际做了什么?我假设您指的是用@Transaction注释的实现方法,例如: @Transaction public void transferMoney(String accountA, String accountB, int amount) { updateMoney(accountA, -amount); updateMoney(accountB, +

@Transaction
中,文件室是否使用回滚作为默认值

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


它在出错时实际做了什么?

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

@Transaction
public void transferMoney(String accountA, String accountB, int amount) {
  updateMoney(accountA, -amount);
  updateMoney(accountB, +amount);
}
房间是否在@Transaction中使用回滚作为默认值

是的,如果在用
@Transaction
注释的方法中抛出异常,则Room将执行
回滚事务

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

它取消方法中的每个后续查询,并回滚方法中任何其他查询所做的任何更改,直到出现故障为止

它在出错时实际做了什么

它回滚事务


如果您所引用的
@Query
带注释的方法也带有
@Transaction
注释,那么这些都是只读查询,因此实际上没有什么可回滚的,但是,当生成的数据很大或返回的数据具有
@关系时,数据是有保证的。见: