想确认是否可以将实体 bean 绑定到表的部分列?
例子:
表“A”有列 id, col1, col2, col3, col4, col5, ... , col10
但是我只需要 id、col1、col2,所以我创建了一个包含字段 id、col1、col2 的实体 bean 并且只对这些字段进行绑定?我尝试这样做,但得到:
引起:java.lang.IllegalStateException: Room 无法验证数据完整性。看起来您已更改架构但忘记更新版本号。您可以通过增加版本号来简单地解决此问题。
感谢是否有人可以验证是否可以使用 Room Persistence Library 进行上述绑定。
(注意:为什么我的表中有一些列没有在移动应用程序中使用。这些表模式是服务器端某些表的精确副本,因此某些字段在服务器端 webapp 中使用)
返回列的子集
大多数情况下,您只需要获取实体的几个字段。例如,您的 UI 可能只显示用户的名字和姓氏,而不是有关用户的所有详细信息。通过仅获取出现在您的应用 UI 中的列,您可以节省宝贵的资源,并且您的查询可以更快地完成。
https://developer.android.com/topic/libraries/architecture/room.html
您可以定义一个没有@Entity注释的模型并在您的选择查询中使用它。
// No @Entity annotation here !!!
public class NameTuple {
@ColumnInfo(name="first_name")
public String firstName;
@ColumnInfo(name="last_name")
public String lastName;
}
Run Code Online (Sandbox Code Playgroud)
没有必要编写另一个 DAO(因为新类不是实体) - 您可以使用新类作为任何现有 DAO 中的返回数据类型。
// inside any existing DAO
@Query("SELECT first_name, last_name FROM user")
public List<NameTuple> loadFullName();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |