Room:如何在 DAO 接口中使用 @Transaction

Lor*_*ash 6 android android-room

关于这个问题的答案:如何在我的实体中使用 setBalance 方法来设置成员的实际余额值?

答案建议使用@Transaction 方法。我不明白如何使用这种方法。另外,我的 DAO 是一个接口,答案的 DAO 是一个抽象。

如何将答案中建议的方法实现到我的接口 DAO 中,然后再到存储库中?

在此处输入图片说明

在此处输入图片说明

Ber*_*yle 6

房间中的事务方法是用@Transaction注解标记的方法。

由于接口中不能有非抽象方法,因此需要为 DAO使用抽象类而不是接口

例如,

@android.arch.persistence.room.Dao
public abstract class AppDao {
    @Transaction
     public void insertAndDeleteInTransaction(Product newProduct, Product oldProduct) {
         // Anything inside this method runs in a single transaction.
         insert(newProduct);
         delete(oldProduct);
     }
}
Run Code Online (Sandbox Code Playgroud)

  • 我只有一个小问题 - 现在我有了这个方法,但是我的 @Transaction 方法使用了两个不同的 DAO。我的另一个问题的答案说我应该让它在存储库中处理。我该怎么做?是的,我会在它工作后将其标记为已接受。 (2认同)