Android Room:带嵌套 DAO 的 DAO

Android Room: DAOs with nested DAOs

有没有办法使用 Android Room Persistence Library 将 DAO 添加为其他 DAO 的依赖项,也许是使用 Dagger2?我试图避免在使用事务对多个表进行操作的 DAO class 中发生方法爆炸。

这就是我想要完成的。

示例:FooBarRepository.class

@Dao
public abstract class FooBarRepository {
    // THESE ARE DAOs ADDED AS DEPENDENCIES
    FooRepository fooRepository;
    BarRepository barRepository;

    ...

    @Transaction
    public void insertOrUpdateInTransaction(FooBar... foobars) {
        for (FooBar item : foobars) {
            fooRepository.insertOrUpdateInTransaction(item.getFoo());
            barRepository.insertOrUpdateInTransaction(item.getBar());
        }
    }
}

终于找到解决方案:

@Dao
public abstract class Repository {

    private final TaskRepository taskRepository;
    private final ResourceRepository resourceRepository;

    public Repository(AppDatabase database) {
        this.taskRepository = database.getTaskRepository();
        this.resourceRepository = database.getResourceRepository();
    }
...

这是允许的,因为一个 dao 对象 can take the database as a constructor parameter