android - 在新的 Room 持久性库中创建等效的 View

标签 android sqlite android-room

我的应用程序中有前 10 名用户的 RecyclerView。我用一个游标填充它,该游标从 sql 中的 SQL VIEW 读取,该游标从通过外键相关的不同表中聚合。我想重新编写 SQLite 样板以使用新的 Room 库。但是,我不知道如何在 Room 中实现 SQL VIEW。 DAO 似乎只适用于实体(表),或者我可能只是遗漏了一些东西。

最佳答案

您还可以使用从 DAO 连接多个表的 POJO。来自Room documentation :

@Dao
public interface MyDao {
   @Query("SELECT user.name AS userName, pet.name AS petName "
          + "FROM user, pet "
          + "WHERE user.id = pet.user_id")
   public LiveData<List<UserPet>> loadUserAndPetNames();

   // You can also define this class in a separate file, as long as 
   // you add the "public" access modifier.
   static class UserPet {
       public String userName;
       public String petName;
   }
}

这也适用于聚合函数。

关于android - 在新的 Room 持久性库中创建等效的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46030625/

相关文章:

sqlite - 如果不在 SQLite 中指定新列的数据类型怎么办?

android - 请求ROOM时可以直接使用LiveData吗?

java - 如何在非 Activity 状态下调用电话?

android - Canvas 绘制html文本

android - 将json对象发送到android中的服务器

android - 从 onClickListener 检索图像(保存在 sqlite 中)

sqlite - 在 UWP 应用程序中包含带有数据的 SQLite DB 文件

android - 在Android上以编程方式绘制带有边框(角半径)的椭圆形

android - 无法使用 Room persistence 获取查询结果

android - 与 Livedata 不同,使用 Flow in Room 查询在更新表条目时不会触发刷新,但在我删除或插入条目时有效