Android ROOM не сохраняет все поляAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android ROOM не сохраняет все поля

Сообщение Anonymous »

Итак, у меня возникла очень неприятная проблема: база данных не сохраняет все поля.
Это мой тестовый код:

Код: Выделить всё

System.out.println("P1");
System.out.println(day.fahrzeit);
System.out.println(day.pause);
System.out.println(week.kw);
System.out.println(day.dayIdx);

weekDao.delete(week);
weekDao.insert(week);
dayDao.delete(day);
dayDao.insert(day);

System.out.println("P2");
Day d = db.getDayDao().getByKwAndIdx(51, 3);
System.out.println(d.fahrzeit);
System.out.println(d.pause);
Вот что я получаю:

Код: Выделить всё

P1
0.083333336
0.25
51
3
P2
0.0
0.25
Отчетливо видно, что поле «fahrzeit» сбрасывается до 0,0, а значение «пауза» остается 0,25.
Это сущность дня:

Код: Выделить всё

@Entity
public class Day {
@PrimaryKey
public int id;

@ColumnInfo(name = "day_idx")
public int dayIdx;

@ColumnInfo(name = "week_id")
public int weekId;

@ColumnInfo(name = "user_id")
public int userId;

@ColumnInfo(name = "datum")
public String datum;

@ColumnInfo(name = "tag")
public String tag;

@ColumnInfo(name = "beginn")
public String beginn;

@ColumnInfo(name = "ende")
public String ende;

@ColumnInfo(name = "pause")
public Float pause;

@ColumnInfo(name = "summe")
public Float summe;

@ColumnInfo(name = "fahrzeit")
public Float fahrzeit;

@ColumnInfo(name = "ausloese")
public Float ausloese;

@ColumnInfo(name = "ue_pausch")
public Float uePausch;

@ColumnInfo(name = "fahr_km_privat")
public Float fahrKmPrivat;

@ColumnInfo(name = "arbeitsauftrag")
public String arbeitsauftrag;
}

Почему это происходит и как это решить?
Изменить:
Это реализация getByKwAndIdx():
Это реализация getByKwAndIdx():
p>

Код: Выделить всё

@Query("SELECT * FROM day A JOIN week B ON B.kw = :kw WHERE A.week_id = B.id AND A.day_idx = :dayIdx")
Day getByKwAndIdx(int kw, int dayIdx);
Я разместил точку останова после последней вставки(), и вот состояние базы данных:
[img]https:// i.sstatic.net/iVnTY1Aj.png[/img]
Это подтверждает, что
а) Доступен только 1 день
б) Fahrzeit не равен 0,0

Подробнее здесь: https://stackoverflow.com/questions/792 ... all-fields
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»