gpt4 book ai didi

android - 使用 OrmLite 加强数据完整性

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:03 25 4
gpt4 key购买 nike

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

@ForeignCollectionField 
private ForeignCollection<Answer> answers;

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

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

如果我试图持久化一个 Answer 引用了一个尚未持久化到数据库的 Question ,我曾预计 ORMlite 会抛出异常。然而,这似乎并没有发生。我可以随心所欲地保留 Answer 对象,而不保存引用的 Question 对象。通过使用 SQLliteBrowser 查看我的数据库,我验证了正在保存 Answer 并且没有保存任何问题。这破坏了我的数据完整性,因为当我重新启动我的程序时,数据库现在包含引用不存在问题的答案。

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

最佳答案

将以下 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

关于android - 使用 OrmLite 加强数据完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com