4

想确认是否可以将实体 bean 绑定到表的部分列?

例子:

表“A”有列 id, col1, col2, col3, col4, col5, ... , col10

但是我只需要 id、col1、col2,所以我创建了一个带有字段 id、col1、col2 的实体 bean,并且只对这些字段进行绑定?我试过这样做,但得到:

原因:java.lang.IllegalStateException:Room 无法验证数据完整性。看起来您已更改架构但忘记更新版本号。您可以通过增加版本号来解决此问题。

感谢是否有人可以验证是否可以使用 Room Persistence Library 进行上述绑定。

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

4

1 回答 1

7

返回列的子集

大多数时候,您只需要获取实体的几个字段。例如,您的 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();
于 2017-06-29T10:19:55.817 回答