首页 > 解决方案 > 如何在房间持久性库中使用嵌套模型?

问题描述

如何将用户表“addressId”列与地址表“id”列相关联?当我插入用户模型数据时,我如何在两个表“用户和地址”中插入数据。和获取数据的情况一样吗?

地址模型是用户模型的嵌套类。

@Entity(tableName = "user")
public class User {

    @PrimaryKey(autoGenerate = true)
    private Integer localId;

    private Integer id;

    private String name;

    private Integer addressId;

    private Address address;
}

@Entity(tableName = "address")
public class Address {

    @PrimaryKey(autoGenerate = true)
    private Integer localId;

    private Integer id;

    private String address1;

    private String address2;

    private String address3;
}

标签: androidandroid-roomandroid-architecture-componentsandroid-jetpack

解决方案


https://developer.android.com/training/data-storage/room/referencing-data

基本上你的选择是:

  • 重组以使用不同的表
  • 利用@Embedded
  • 使用类型转换器将它们保存为一些原始类型(可能会限制您查询这些数据的能力)

推荐阅读