我有一个Question
类,其中包含Answer
个对象的列表。
在我的POJO中,我在我的问题类中表示为:
@ForeignCollectionField
private ForeignCollection<Answer> answers;
在我的Answer类中,这种关系被声明为:
@DatabaseField(foreign = true, canBeNull=false)
private Question question;
如果我试图将Answer
引用尚未持久存储到数据库的Question
,我原本以为ORMlite会抛出异常。但是,这似乎不会发生。我可以在不保存引用的Answer
对象的情况下随意保留Question
个对象。我通过使用Answer
查看我的数据库,验证了SQLliteBrowser
正在保存,而不会保存任何问题。这会破坏我的数据完整性,因为当我重新启动程序时,db现在包含引用不存在的问题的答案。
有没有办法强制执行此操作?根据我在Hibernate方面的经验,如果不先保存引用的“父”对象,它将不允许您保存Child对象。
答案 0 :(得分:7)
将以下columnDefinition
添加到您的字段中,如果它引用的外来ID不存在,则不允许创建该对象。
@DatabaseField(foreign = true, canBeNull=false,
columnDefinition = "integer references question(id) on delete cascade")
private Question question;
另见其他主题:Creating foreign key constraints in ORMLite under SQLite