首页 > 解决方案 > 如果可以将同一个对象保存到两个不同的表房间吗?

问题描述

假设我有 obj

class Human{
List<Car> demagedCars = new ArrayList();
List<Car> newCars = new ArrayList();
}

@Entity(tableName = "carstable")
class Car{
@PrimaryKey(autogenerate = true)
public long id;

public String name;
}

因此,房间将创建一个名称为的表,carstable我将从两个列表中保存到该表中的对象newCarsdemagedCars

我怎样才能让它回到两个列表?

我认为可以创建两个表demagedcarstablenewcarstable

并根据列表保存demagedCarsdemagedcarstablenewCarsnewcarstable

但据我了解,没有办法为表格创建空间?

我不想改变我的对象...

我所需要的只是在一个数据库中创建 2 个表。当我得到demagedCars所有我需要的清单时,我会告诉他I want you to save to demagedcarstable,当我得到newCars清单时,我会告诉他I want you to save to newcarstable。因此,我有 1 个数据库和 2 个表,我想在哪里保存这个Car对象。问题是:有可能吗?

随意问

标签: javaandroidandroid-room

解决方案


从结构的角度来看,我相信您应该将它们全部存储在同一个表中,比如说carsTable,并为汽车对象添加一个状态字段。然后,您可以查询您的carsTable并使用该状态字段过滤 WHERE 子句中的结果。

编辑:

从 RoomDB 的角度来看,您的查询看起来像这样:

@Query("SELECT * FROM carsTable WHERE status = :status")
public Car[] findCarsByStatus(String status);

推荐阅读