the*_*osh 5 android android-sqlite greendao
在处理Bi Directional 1:m关系时,将新对象插入Green-DAO DB的正确方法是什么?
可以说,我有一个聊天应用程序,它有一个会话实体和一个消息实体.每个对话都有一个消息列表,每条消息都有一个父对话.
我现在做的是:
Conversation conv = new Conversation();
ConversationDao.insert(conv);
List<Message> list = conv.getMessageList();
Message msg = new Message();
MessageDao.insert(msg);
msg.setParent(conv.getId());
list.add(msg);
// SHOULD I UPDATE THE CONVERSATION IN THE DB???
Run Code Online (Sandbox Code Playgroud)
在我看来,我没有正确地做到这一点,我希望得到一些指导广告,以正确的方式来做到这一点.
提前致谢...
编辑:
从我的评论中可以看出,在尝试按照我在这里写的方式实现代码之后,我得到了一个null而不是我试图链接的对话.
我改变了我的代码,现在它看起来像这样:
private static void linkMessageToAuthorAndParent(Message messageObj, Thread parent) {
List<Message> threadsMessages = parent.getMessageList();
messageObj.setThread(parent);
messageDao.insert(messageObj);
threadsMessages.add(messageObj);
Log.d("DtabaseHelper.parseMessage", "message was inserted");
}
Run Code Online (Sandbox Code Playgroud)
但同样,我的问题是我不确定连接现在是双向的.
我现在应该更新threadsDao吗?
试试这样:
Conversation conv = new Conversation();
ConversationDao.insert(conv);
List<Message> list = conv.getMessageList();
Message msg = new Message();
msg.setParent(conv.getId()); // Set FK *before* inserting
MessageDao.insert(msg);
list.add(msg);
Run Code Online (Sandbox Code Playgroud)
在有关关系的官方文档中,有一个“解决和更新多对多关系”部分,提供了一些相关背景信息。
| 归档时间: |
|
| 查看次数: |
897 次 |
| 最近记录: |