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

Room: How to use @Transaction in DAO Interface

关于这个问题的答案:

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

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

room 中的交易方法是用 @Transaction 注释标记的方法。

由于接口中不能有非抽象方法,因此需要使用 抽象 class 而不是 interface 对于 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);
     }
}