是否有可能在Dao室内翻身?

时间:2018-04-24 13:53:06

标签: android android-room

这是一个解释问题的简单例子。

public interface User {
    long getId();
}

@Entity
public class UserImpl implements User {
    @PrimaryKey(autoGenerate = true)
    private final long id;

    public UserImpl(long id) {
        this.id = id;
    }


    @Override
    public long getId() {
        return id;
    }
}

@Dao
public interface UserImplDao {
    @Query("SELECT * FROM UserImpl")
    List<UserImpl> getAll();
}

@Database(entities = UserImpl.class, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract UserImplDao userImplDao();
}

是否可以让UserImplDao返回List<User>而不是List<UserImpl>

似乎它应该很容易但如果我将返回类型更改为List<User>则无法编译。

error: Not sure how to convert a Cursor to this method's return type

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并试图找出它是否受支持。

不幸的是,您似乎无法让Dao返回超类型,但让它构建子类型。

在我的研究中,我发现了一个未解决的问题,要求能够执行此操作:https://issuetracker.google.com/issues/78317963