使用房间数据库中的同一类创建两个表



我正在使用Room作为应用程序的数据库。我正在使用改造从服务器获取数据。场景是我有一个名为Photo的类,并用Entity注释供房间使用,并且我使用此类使用 retroft 映射 API 的响应。我需要使用相同的类创建两个表,例如:latest_photos表和popular_photos表。我怎样才能做到这一点。

  • 我不想创建一个新类并使其从另一个类扩展
  • 我有一个通过插入新列来使用单个表的想法 这表明天气照片很受欢迎或最新,但我不知道 如何有效地实施它。

    公共无效插入照片(最终列表照片( { ioExecutor.execute(new Runnable(( { @Override public void run(( { 照片Dao.bulkInsert(updateList(photos((; } }); }

在这里插入照片列表(由 20 个照片对象组成(。 如何为每个照片对象添加新字段。 我尝试使用 for loop,但这需要相当长的时间,因为我不仅收到 20 个项目,而且通过 Web 服务器进行分页。

  • 有没有办法为改造响应和映射添加新值 它到照片类

我解决了这个问题,现在我只处理一个表。 我插入了一个新列,指示照片流行或最新的天气,但问题是服务器没有返回任何有用的数据来填充此列。 因此,唯一的解决方案是在映射到我的实体之前修改 JSON 响应。 因此,使改造调用返回类型为响应正文返回 JSON 字符串本身而不是映射它,所以我可以将属性添加到 JSON 响应,然后我使用新的 add 属性映射它。

private void processData(Response<ResponseBody> response) {
if (response.isSuccessful()) {
try {
JSONObject jsonObject = new JSONObject(response.body().string());
JSONArray hits = jsonObject.getJSONArray("hits");
List<Photo> photos = new ArrayList<>();
for (int i = 0; i < hits.length(); i++) {
JSONObject photoJSONObject = hits.getJSONObject(i);
photoJSONObject.put("order", order); // add new property
String json = photoJSONObject.toString();
Gson gson = new Gson();
Photo photo = gson.fromJson(json, Photo.class);
photos.add(photo);

}

最新更新