Android Room:具有嵌套DAO的DAO

时间:2017-10-16 09:40:35

标签: android android-room

有没有办法在Android Room Persistence Library的其他DAO中添加DAO作为依赖项,也许可以使用Dagger2?我正在尝试避免DAO类中的方法爆炸,该类使用事务对多个表执行操作。

这就是我想要完成的事情。

示例: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());
        }
    }
}

1 个答案:

答案 0 :(得分:2)

终于找到了解决方案:

@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-object can take the database as a constructor parameter