В Android комнате постоянная библиотека, как вставить весь объект Model в таблицу, которая имеет в себе другой список.
Позвольте мне показать вам, что я имею в виду:
@Entity(tableName = TABLE_NAME)
public class CountryModel {
public static final String TABLE_NAME = "Countries";
@PrimaryKey
private int idCountry;
private List<CountryLang> countryLang = null;
public int getIdCountry() {
return idCountry;
}
public void setIdCountry(int idCountry) {
this.idCountry = idCountry;
}
public String getIsoCode() {
return isoCode;
}
public void setIsoCode(String isoCode) {
this.isoCode = isoCode;
}
/**
here i am providing a list of coutry information how to insert
this into db along with CountryModel at same time
**/
public List<CountryLang> getCountryLang() {
return countryLang;
}
public void setCountryLang(List<CountryLang> countryLang) {
this.countryLang = countryLang;
}
}
мой DAO выглядит так:
@Dao
public interface CountriesDao{
@Query("SELECT * FROM " + CountryModel.TABLE_NAME +" WHERE isoCode =:iso_code LIMIT 1")
LiveData<List<CountryModel>> getCountry(String iso_code);
@Query("SELECT * FROM " + CountryModel.TABLE_NAME )
LiveData<List<CountryModel>> getAllCountriesInfo();
@Insert(onConflict = REPLACE)
Long[] addCountries(List<CountryModel> countryModel);
@Delete
void deleteCountry(CountryModel... countryModel);
@Update(onConflict = REPLACE)
void updateEvent(CountryModel... countryModel);
}
Когда я вызываю database.CountriesDao().addCountries(countryModel);
я получаю следующую ошибку компиляции базы данных: Ошибка: (58, 31) ошибка: Не могу понять, как сохранить это поле в базе данных. Вы можете рассмотреть возможность добавления конвертера типов для него.
должна быть еще одна таблица с именем CountryLang? и если да, то как указать номер, чтобы связать их в инструкции вставки?
Сам объект CountryLang выглядит так:
public class CountryLang {
private int idCountry;
private int idLang;
private String name;
public int getIdCountry() {
return idCountry;
}
public void setIdCountry(int idCountry) {
this.idCountry = idCountry;
}
public int getIdLang() {
return idLang;
}
public void setIdLang(int idLang) {
this.idLang = idLang;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
ответ выглядит так:
"country_lang": [
{
"id_country": 2,
"id_lang": 1,
"name": "Austria"
}
]
Для каждой страны, поэтому здесь не будет больше одного пункта. Мне удобнее называть его только одним элементом в списке country_lang. Так что я могу просто сделать таблицу для country_lang, а затем кое-как связать ее с CountryModel. но как? я могу использовать внешний ключ? Я надеялся, что мне не нужно было использовать плоский файл. так ты говоришь, я должен хранить его как JSON? Рекомендуется не использовать комнату для временного? что использовать вместо этого?