Android Room 的部分实体绑定

4

请问是否可以将实体bean绑定到表的部分列?

例如:

表"A"有列id、col1、col2、col3、col4、col5、...、col10

但我只需要id、col1和col2,所以我创建了一个只包含这些字段的实体bean,并仅对这些字段进行绑定。但我尝试这样做时出现了以下错误:

Caused by: java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number.

请问是否有人能够确认使用Room Persistence Library是否可以进行上述绑定。

(注:为什么我的表中有一些未在移动应用程序中使用的列。这些表模式是服务器端某些表的精确副本,因此某些字段在服务器端Web应用程序中被使用)

1个回答

8

返回列的子集

大多数情况下,您只需要获取实体的几个字段。例如,您的 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;
}

不必编写另一个DAO(因为新类不是实体)-您可以将新类用作现有DAO中的返回数据类型。

// inside any existing DAO
    @Query("SELECT first_name, last_name FROM user")
    public List<NameTuple> loadFullName();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接