2012-12-12 105 views
5

的是具有雙向定向1時務請插入一個新的對象變成綠色DAO DB的正確方法:M的關係?正確方法:米綠DAO

比方說,我有了一個談話實體和消息實體聊天應用。每個對話都有一個消息列表,每個消息都有一個父對話。

我現在要做的是:

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??? 

在我看來,像我這樣做並不是正確的,我很想得到一些指導廣告正確的方式來做到這一點。

在此先感謝...

編輯:
這可以從我的評論中可以看出,試圖執行的代碼,我在這裏寫下的方式後,我收到了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"); 
} 

但同樣,我的問題是,我不知道該連接現在是雙向的。
我現在應該更新線程嗎?

回答

0

試試這樣說:

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); 

official documentation on relations有一節「解決和更新的一對多關係」給予這方面的一些背景資料。

+0

我不得不說,這並不能在現實生活中工作,我在我的代碼嘗試這樣做,msg.getConverstaion的'()的結果是''null'。我不得不使用'msg.setConversation(轉化)' – thepoosh

+0

你調用實體之前或之後msg.getConversation()使用DAO插入? –

+0

是的,我完全遵循文檔中寫的內容,但得到了一個空值。使用'msg.setConversation'和它的工作,我不知道其他的方向努力,那就是我的問題 – thepoosh