(ORMLite - android)直接设置外键字段

时间:2013-09-24 17:59:46

标签: java android sqlite ormlite

在我的Android应用程序中,我从服务器下载记录并将其保存到数据库 - 我希望能够保存"消息"记录而不必先保存"线程"他们所附的记录。

消息由以下内容组成:

  • 字符串ID
  • String body
  • Long sent_ts
  • String sender_id
  • String topic_id

是否可以直接在Message对象上设置topic_id和sender_id记录,而不是创建虚拟主题实例和用户实例?我知道我可以不将字段标记为外来字符并放弃对相关对象的一些更容易的查找或首先保存所有嵌套对象,但是可以在外部提供密钥的情况下直接设置外键引用?

这是在Android上使用标准的Android SQLite设置完成的。

修改

我最终决定在同一个数据库表上编写多个模型。它不是最优雅的解决方案,但它似乎是能够直接填充外部id字段或连接其他表的唯一方法,具体取决于上下文。

1 个答案:

答案 0 :(得分:1)

  

我希望能够保存“消息”记录,而无需先保存它们所附加的“线程”记录。

因此,每个Message都有一个外国TopicUser字段,您希望在之前保留Message个实例是否已将它们分配给那些异物?

是的,您当然可以将topicuser字段保留为null。当然,您需要将它们标记为canBeNull=true。之后,您应该可以在相关topic上设置userMessage字段,然后调用messageDao.update(message)来更新数据库。

修改

阅读完您的评论后,我现在明白了。有没有办法将id字段保存到类而不是创建只设置了id字段的虚拟对象?除非你自己做原始SQL创建语句,否则答案是否定的。 ORMLite需要有Topic字段,因为这是它所期望的。如果您只想要该ID,则可以使用int topic_id字段而不是Topic topic并自行执行主题关联。