4

我有一个Question包含Answer对象列表的类。在我的 POJO 中,我在 Question 类中将其表示为:

@ForeignCollectionField 
private ForeignCollection<Answer> answers;

在我的 Answer 类中,这种关系被声明为:

@DatabaseField(foreign = true, canBeNull=false)
private Question question;

Answer如果我试图持久化引用了Question尚未持久化到数据库的 a,我曾预计 ORMlite 会抛出异常。但是,这似乎不会发生。我可以随意保存对象Answer而不保存引用的Question对象。我通过Answer使用SQLliteBrowser. 这破坏了我的数据完整性,因为当我重新启动程序时,数据库现在包含引用不存在问题的答案。

有什么办法可以强制执行吗?根据我在 Hibernate 中的经验,如果不先保存引用的“父”对象,则不允许您保存子对象。

4

1 回答 1

7

将以下内容添加columnDefinition到您的字段中,如果它引用的外部 ID 不存在,它将不允许创建对象。

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

另见其他线程:在 SQLite 下的 ORMLite 中创建外键约束

于 2012-11-02T08:41:52.687 回答