Допустим, у меня есть объект
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;
}
Итак, room создаст одну таблицу с именем carstable. Я сохраню в эту таблицу объекты из двух списков newCars и demagedCars.
Как мне вернуть его к двум спискам?
Я думал, что можно создать две таблицы demagedcarstable и newcarstable
И сохраняем согласно списку demagedCars в demagedcarstable и newCars в newcarstable
Но насколько я понял, нет возможности создавать таблицы?
Я не хочу менять свой объект ...
Все, что мне нужно, это создать в одной базе данных 2 таблицы. И когда я получаю список demagedCars, все, что мне нужно, это сказать ему I want you to save to demagedcarstable, а когда я получаю список newCars, я говорю ему I want you to save to newcarstable. В результате у меня есть 1 база данных и 2 таблицы, и мне решать, где я хочу сохранить этот объект Car. Вопрос: возможно ли это?
Не стесняться спрашивать




Со структурной точки зрения я считаю, что вы должны хранить все это в одной таблице, скажем, автомобилиСтол и добавить поле статуса к объекту автомобиля. Затем вы можете запросить свой автомобилиСтол и отфильтровать результаты по предложению WHERE, используя это поле статуса.
Обновлено:
С точки зрения RoomDB ваш запрос будет выглядеть примерно так:
@Query("SELECT * FROM carsTable WHERE status = :status")
public Car[] findCarsByStatus(String status);
у вас может быть столько комнатных баз данных для одного и того же объекта, сколько вы хотите
@Database(entities = Car.class, version = 1, exportSchema = false)
public abstract class newCarsDatabase extends RoomDatabase {
private static final String LOG_TAG = newCarsDatabase.class.getSimpleName();
private static final Object LOCK = new Object();
private static newCarsDatabase sInstance;
public static newCarsDatabase getInstance(Context context) {
if (sInstance == null) {
synchronized (LOCK) {
Log.e(LOG_TAG, "creating new database");
String databaseName = "new_cars";
sInstance = Room.databaseBuilder(context.getApplicationContext(), newCarsDatabase.class, databaseName).build();
}
}
Log.e(LOG_TAG, "Getting the database instance");
return sInstance;
}
public abstract CarsDao favDao();
}
Для поврежденных
@Database(entities = Car.class, version = 1, exportSchema = false)
public abstract class demagedCarsDatabase extends RoomDatabase {
private static final String LOG_TAG = demagedCarsDatabase.class.getSimpleName();
private static final Object LOCK = new Object();
private static demagedCarsDatabase sInstance;
public static demagedCarsDatabase getInstance(Context context) {
if (sInstance == null) {
synchronized (LOCK) {
Log.e(LOG_TAG, "creating new database");
String databaseName = "damaged_cars";
sInstance = Room.databaseBuilder(context.getApplicationContext(), demagedCarsDatabase.class, databaseName).build();
}
}
Log.e(LOG_TAG, "Getting the database instance");
return sInstance;
}
public abstract CarsDao DamagedDao();
}
Кроме того, вы можете просто добавить данные к каждому из них, вы можете использовать одно и то же Дао для них обоих, или, если хотите, вы можете сделать Дао для каждого из них, но поскольку у вас есть только один класс, я рекомендую вам сделать один Дао для обоих. их
Не уверен, что есть хороший образец ... Все, что мне нужно, это создать в одной базе данных 2 таблицы. И когда я получаю список demagedCars, все, что мне нужно, это сказать ему I want you to save to demagedcarstable, а когда я получаю список newCars, я говорю ему I want you to save to newcarstable. В результате у меня есть 1 база данных и 2 таблицы, и мне решать, где я хочу сохранить этот объект Car. Вопрос: возможно ли это?
Не уверен, что есть хороший образец ... Все, что мне нужно, это создать в одной базе данных 2 таблицы. И когда я получаю список
demagedCars, все, что мне нужно, это сказать емуI want you to save to demagedcarstable, а когда я получаю списокnewCars, я говорю емуI want you to save to newcarstable. В результате у меня есть 1 база данных и 2 таблицы, и мне решать, где я хочу сохранить этот объектCar. Вопрос: возможно ли это?