如何使用 ormlite 保存嵌套在另一个对象中的对象?

How to save object nested inside another object with ormlite?

我尝试保存 "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 Documentation
- First Whosebug Answer
- Second Whosebug Answer

有关更多代码,请参阅我的 github 项目:
Github SmartFridge

我的 Ormlite 数据库有一个 UtilConfigClass 并且总是更新 config.txt。
我在这里做错了什么?为什么不正确保存 ScanItem?

经过一些检查,我可以说其他方法工作得很好。 (仅在丢失 ScanItem 之后,我得到 NullPointerException)。我的结论是,问题出在 BestandItem 的构造函数上。

我想我对 generatedID and/or foreignAutoCreate 做错了什么,但我真的不明白如何正确使用它。 还有 foreignAutoRefresh 到底做了什么。

我已经尝试更改 ID 和 generatedId,因为我认为这是问题所在。

经过一些测试和无数次尝试,我现在有了一个解决方案。 因为 ScanItem 中的条形码是唯一的,所以我可以将它用作 ID,而不是生成的 ID。 使用现有 ID,该程序现在可以运行了。