Embedded List в room
Имеется модель класса
@Entity
@TypeConverters({
ConverterList.class,
ConverterListObject.CardsOBJ.class,
ConverterListObject.LoansOBJ.class,
ConverterListObject.CountriesOBJ.class,
ConverterListObject.Cards_creditOBJ.class,
ConverterListObject.CreditsOBJ.class,
ConverterListObject.Cards_installmentsOBJ.class,
ConverterListObject.Cards_debitOBJ.class,
})
public class DB {
@PrimaryKey(autoGenerate = true)
private long id;
private List<String> news;
private List<Cards> cards;
@Embedded(prefix = "ru")
private Ru ru;
private List<String> documents;
private List<Loans> loans;
}
Пример конвертора
public class ConverterListObject {
public static class CardsOBJ {
@TypeConverter
public static List<Cards> stringToCards(String json) {
Gson gson = new Gson();
Type type = new TypeToken<List<Cards>>() {
}.getType();
List<Cards> measurements = gson.fromJson(json, type);
return measurements;
}
@TypeConverter
public static String CardsToString(List<Cards> list) {
Gson gson = new Gson();
Type type = new TypeToken<List<Cards>>() {
}.getType();
String json = gson.toJson(list, type);
return json;
}
}
DB.class have constructor
public DB() {
public DB(long id, List<String> news, List<Cards> cards, Ru ru, List<String> documents, ...) {
this.id = id;
this.news = news;
this.cards = cards;
this.ru = ru;
this.documents = documents;
this.loans = loans;
this.countries = countries;
}
Но код не компилируется а выдает ошибку, неважно есть конструктор или нет Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). - java.util.List
Ответы (1 шт):
Автор решения: Спицко Дмитрий
→ Ссылка
Буквально пару дней назад отвечал на очень похожий вопрос. Он там задан иначе, но проблема та же. Суть в том, что хранить внутри одной сущности типа Entity список невозможно. Чтобы получать объект с полями-списками надо действовать как я описал в этом ответе