android – 使用OrmLite强制执行数据完整性

android – 使用OrmLite强制执行数据完整性,第1张

概述我有一个Question类,其中包含Answer对象列表. 在我的POJO中,我在我的Question类中表示为: @ForeignCollectionField private ForeignCollection<Answer> answers; 在我的Answer类中,这种关系被声明为: @DatabaseField(foreign = true, canBeNull=false)priv 我有一个Question类,其中包含Answer对象列表.
在我的POJO中,我在我的Question类中表示为:

@ForeignCollectionFIEld private ForeignCollection<Answer> answers;

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

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

我原本以为如果我试图坚持一个引用尚未持久保存到数据库的问题的答案,Ormlite会抛出异常.但是,这似乎不会发生.我可以在不保存引用的Question对象的情况下随意保留Answer对象.我通过使用sqllitebrowser查看我的数据库,验证了Answers正在保存,不会保存任何问题.这会破坏我的数据完整性,因为当我重新启动程序时,db现在包含引用不存在问题的Answers.

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

解决方法 将以下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强制执行数据完整性全部内容,希望文章能够帮你解决android – 使用OrmLite强制执行数据完整性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129816.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存