使用列表在房间数据库中存储模型对象

时间:2017-08-02 09:59:08

标签: java android android-room

看看各种在线资源,关于这个主题,我似乎无法弄清楚这一点。

我有一个如下所示的模型对象:HomeResponse

@Entity(tableName = "HomeData")
public class HomeResponse {

  @PrimaryKey
  public  int counts;

  public List<Trade> mTrades;
}

我的Trade对象看起来像这样:

@Entity
public class Trade {
  public int tradeId;
  public String title;
}

我看到的第一件事是@TypeConverter 然而,这似乎仅适用于仅包含原始字段的POJO。

看来,我正在寻找的是@ForeignKey

这仍然感觉不对。因为我的Trades对象不仅会出现在HomeResponse对象中。我可能会在与其他Tades相关的其他POLO中拥有它。

HomeResponse同时将Trades对象存储在数据库中的理想方法是什么?

1 个答案:

答案 0 :(得分:1)

  

我有一个如下所示的模型对象:HomeResponse

这不是一个合适的房间@Entity。删除public List<Trade> mTrades字段。

  

看来,我正在寻找的是@ForeignKey

Trade上更正,指向HomeResponse

  

这仍然感觉不对。因为我的Trades对象不会只在HomeResponse对象中。我可能会在与其他Tades相关的其他POLO中拥有它。

我不确定POLO是什么。无论如何,实体充当数据库表的模型。把房间放在一边几分钟,然后设计你的桌子结构。然后,创建镜像表结构的实体类。

  

将HomeResponse同时存储在DB中的Trades对象的理想方法是什么?

它没有。您的DAO会保存HomeResponse个对象和Trade个对象。