Как сохранить объект, вложенный в другой объект, с помощью ormlite? - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь сохранить «BestandItem», который состоит из «ScanItem» и календаря с Ormlite.После перезапуска моего приложения (для Android с Android Studio, которую я пишу с Java) содержимое ScanItem исчезает, но только если оно находится внутри Bestanditem.

Это мой ScanItem:

@DatabaseTable(tableName = "scanItem")
public class ScanItem{
@DatabaseField (generatedId = true)
private int id;
@DatabaseField
private String barcode;
@DatabaseField
private String name;

public ScanItem(String barcode, String name) {
    this.barcode = barcode;
    this.name = name;
}

public ScanItem(){}

И это мой BestandItem:

@DatabaseTable (tableName = "bestandItem")
public class BestandItem {
@DatabaseField (generatedId = true)
private int id;
@DatabaseField (foreign = true, foreignAutoCreate = true)
private ScanItem scanItem;
@DatabaseField (dataType = DataType.SERIALIZABLE)
private Calendar ablaufDatum;

public BestandItem() {    }

public BestandItem(ScanItem scanItem, Calendar ablaufDatum) {
    this.scanItem = scanItem;
    this.ablaufDatum = ablaufDatum;
}

Некоторые из вещей, которые я пробовал:- Документация Ormlite - Первый ответ Stackoverflow - Второй ответ Stackoverflow

Дополнительную информацию смотрите в моем проекте на github: Github SmartFridge

Моя база данных Ormlite имеет UtilConfigClass и постоянно обновляемый файл config.txt.Что я тут не так сделал?Почему бы не сохранить ScanItem правильно?

После некоторых проверок я могу сказать, что другие методы работают просто отлично.(только после потери ScanItem я получаю исключение NullPointerException).Мой вывод заключается в том, что проблема в конструкторе BestandItem.

Я думаю, что я сделал что-то не так с generateID и / или foreignAutoCreate, но я не совсем понимаю, как его правильно использовать.Кроме того, что именно ForeignAutoRefresh делает.

Я пытался изменить идентификатор и генерируемый идентификатор вокруг, потому что я думаю, в этом проблема.

1 Ответ

0 голосов
/ 29 мая 2018

После некоторых тестов и бесчисленных попыток у меня теперь есть решение.Поскольку штрих-код внутри ScanItem уникален, я мог бы использовать его для идентификатора вместо сгенерированного идентификатора.И с существующим идентификатором программа теперь работает.

...