2012-12-12 11 views
5

Bi Directional 1:m関係を扱うときに、新しいオブジェクトをGreen-DAO DBに挿入する正しい方法は何ですか?Green-DAOでBi方向1:mを扱う正しい方法

私は会話エンティティとメッセージエンティティを持つチャットアプリケーションを持っています。すべての会話にはメッセージのリストがあり、すべてのメッセージには親の会話があります。私は今のように何

は次のとおりです。

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

私はこれを正しくやっていないことだし、私はこれを行うには正しい方法にはいくつかのガイダンス広告を取得するのが大好きだようにそれは私には思えます。事前に

おかげで...

EDIT:
コードに私がここに書いた方法を実装しようとした後、私のコメントからも分かるように、私が取得する代わりに、私がいた会話の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"); 
} 

しかし、再び、私の問題は、私は接続が今双方向であるかわからないということです。
私は今スレッドDaoを更新する必要がありますか?

答えて

0

はこのようにそれを試してみてください。official documentation on relations

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

セクションこの上でいくつかの背景情報を与える「の解決と更新する-多くの関係」があります。

+0

これは実生活では機能しないと言わざるを得ないので、私は自分のコードでこれを試しました。msg.getConverstaion()の結果は 'null'でした。 'msg.setConversation(conv)'を使用しなければならなかった – thepoosh

+0

DAOを使ってエンティティを挿入する前または後にmsg.getConversation()を呼び出しましたか? –

+0

はい、ドキュメントに書かれているとおりに正確に従っていますが、null値があります。 'msg.setConversation'を使用していましたが、うまくいっていませんでした。それは私の質問の根拠です。 – thepoosh

関連する問題