插入具有相同外键的多行会导致“约束失败”

时间:2013-02-22 01:22:35

标签: android foreign-keys constraints ormlite

我有一个班级Contact和一个班级PhoneNumber。在PhoneNumber类中,我有以下属性:

@DatabaseField(foreign = true, columnName = "contact_id")
private Contact mContact;

并且contact_id类中的Contact就是这样:

@DatabaseField(id = true, columnName = "contact_id", allowGeneratedIdInsert = false)
private Integer m_id;

当我尝试向具有相同PhoneNumber值的数据库中插入新的contact_id时,它总是返回constraint_failed错误。

它应该发生吗?我无法插入具有相同外键的多行?我该如何解决?

1 个答案:

答案 0 :(得分:0)

这应该发生。您实现了一对一的关系,但您需要一对多的关系。在您的班级中,您可以使用单个联系人获取电话号码,但db会为一个电话号码存储多个联系人。这是没有意义的。因此,您应该使用列表联系人,而不是联系人联系人。然后插入具有相同ID的多个联系人将起作用。