Android 使用OrmLite强制实现数据完整性

Android 使用OrmLite强制实现数据完整性,android,ormlite,Android,Ormlite,我有一个问题类,其中包含答案对象的列表。 在我的POJO中,我在我的问题类中表示为: @ForeignCollectionField private ForeignCollection<Answer> answers; 如果我试图持久化一个引用了一个尚未持久化到数据库中的问题的答案,我原以为ORMlite会抛出一个异常。然而,这似乎没有发生。我可以随意保存答案对象,而无需保存引用的问题对象。通过使用SQLliteBrowser查看我的数据库,我验证了Answer已保存,没有问题。

我有一个
问题
类,其中包含
答案
对象的列表。 在我的POJO中,我在我的问题类中表示为:

@ForeignCollectionField 
private ForeignCollection<Answer> answers;
如果我试图持久化一个引用了一个尚未持久化到数据库中的问题的
答案
,我原以为ORMlite会抛出一个异常。然而,这似乎没有发生。我可以随意保存
答案
对象,而无需保存引用的
问题
对象。通过使用
SQLliteBrowser
查看我的数据库,我验证了
Answer
已保存,没有问题。这破坏了我的数据完整性,因为当我重新启动我的程序时,数据库现在包含引用不存在问题的答案


有没有办法强制执行?根据我在Hibernate的经验,如果不先保存引用的“父”对象,它将不允许您保存子对象。

将以下
列定义添加到您的字段中,并且如果它引用的外部ID不存在,它将不允许创建该对象

@DatabaseField(foreign = true, canBeNull=false,
     columnDefinition = "integer references question(id) on delete cascade")
private Question question;
另请参见其他线程:

@DatabaseField(foreign = true, canBeNull=false,
     columnDefinition = "integer references question(id) on delete cascade")
private Question question;