Size: a a a

Android arch. components

2018 July 27

АХ

Анастасия Хоревич in Android arch. components
если оставляю один из конструкторов - то же самое
источник

Р

Ростислав in Android arch. components
Конструктор должен быть один, все остальные обьявлены как Ignore, но в том конструкторе должна быть прописана логика для всех полей что не генкрируются автоматечски, иначе Room не знает что ему делать
источник

АХ

Анастасия Хоревич in Android arch. components
@Ignore
   public SessionEntity() {
   }


   public SessionEntity(List<CartCount> cartCount, String cDate, List<String> favorites, List<String> viewed, boolean backordered) {
       this.cartCount = cartCount;
       this.cDate = cDate;
       this.favorites = favorites;
       this.viewed = viewed;
       this.backordered = backordered;
   }
источник

АХ

Анастасия Хоревич in Android arch. components
теперь еще прибавилось

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
источник

АХ

Анастасия Хоревич in Android arch. components
хотя прописан

@TypeConverters(Converters.class)
@Entity(tableName = "session")
public class SessionEntity {
источник

АХ

Анастасия Хоревич in Android arch. components
и в @Database тоже
источник

АХ

Анастасия Хоревич in Android arch. components
ладно, я List<String> под классы переделаю
источник

Р

Ростислав in Android arch. components
Не уверен, но возможно оно не принимает Converter для ArraList, так как в вас List, а не ArrayList
источник

Р

Ростислав in Android arch. components
Но я не уверен, с конвентерами пока не много работал )
источник

AT

Alexander T in Android arch. components
Анастасия Хоревич
теперь еще прибавилось

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
Для всех полей в Entity с неизвестным для Room типом нужно прописать конвертеры
источник

АХ

Анастасия Хоревич in Android arch. components
@TypeConverters(Viewed.class)
   private List<String> viewed;
источник

АХ

Анастасия Хоревич in Android arch. components
public class Viewed {

   @TypeConverter
   public static ArrayList<String> fromViewed(String value) {
       Type listType = new TypeToken<List<String>>() {}.getType();
       return new Gson().fromJson(value, listType);
   }

   @TypeConverter
   public static String toViewed(List<String> list) {
       Gson gson = new Gson();
       String json = gson.toJson(list);
       return json;
   }
}
источник

АХ

Анастасия Хоревич in Android arch. components
@TypeConverters({Converters.class, Viewed.class})
public abstract class AppDatabase extends RoomDatabase{
источник

AT

Alexander T in Android arch. components
А для
List<CartCount>

есть конвертер? Если полностью ошибку скопируете, там будет написано какое поле у Room не получилось сконвертировать
источник

АХ

Анастасия Хоревич in Android arch. components
там @Embedded
и класс с ColumnInfo

public class CartCount {

   @ColumnInfo(name = "cart_count")
   @SerializedName("count")
   @Expose
   private int count;
   @SerializedName("barcode")
   @Expose
   private String barcode;

   public CartCount() {
   }

   public int getCount() {
       return count;
   }

   public void setCount(int count) {
       this.count = count;
   }

   public String getBarcode() {
       return barcode;
   }

   public void setBarcode(String barcode) {
       this.barcode = barcode;
   }
источник

AT

Alexander T in Android arch. components
error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.

Вот эту ошибку полностью прочитайте, ниже должно быть написано на какой тип конкретно Room ругается, для этого типа и нужно прописать конвертер
источник

АХ

Анастасия Хоревич in Android arch. components
там только эта инфа
источник

AT

Alexander T in Android arch. components
Может версия Room старая? Пройдитесь по всем entity и для каждого типа вашего пропишите конвертер, или методом исключения ищите.
источник

АХ

Анастасия Хоревич in Android arch. components
версия свежая
источник

Sergey λ in Android arch. components
Дык, type erasure же
источник