Green DAOの双方向関係についての以前の質問からおそらく覚えていると思いますが、私は会話とメッセージで構成されるチャットをしています。
すべてのメッセージには親の会話があり、会話にはメッセージのリストがあります。
新しいメッセージを追加しようとすると、アプリケーションを閉じない限り、完全に機能します。
これは、既存の会話にメッセージを追加するために使用するコードです。
私は今これを行う私のコードを持っています:
Conversation conv = getConversation();
List<Message> list = conv.getMessageList();
Message msg = new Message();
msg.setConversationId(conv,getId());
MessageDao.insert(msg);
list.add(msg);
conv.update();
// ConversationDao.update(conv);
次回アプリケーションを開いてを呼び出すconv.getMessageList()
と、結果は空になりArrayList
ます。
私は何が間違っているのですか?
編集:
コードを変更したところ、次のようになりました。
Conversation conv= getCOnversation();
Message msg = new Message();
msg.setConversation(conv);
MessageDao.insert(msg);
conv.resetMessageList();
残念ながら、これまで以上に(同じ実行でも)、呼び出しconv.getMessageList()
ても空のが返されますjava.list
。
編集2:
これがジェネレーターのコードです(これは実際のコードではありませんが、質問にとって重要なものだけです。
Entity message = schema.addEntity("Message");
message.addIdProperty().autoincrement();
Entity conversation =schema.addEntity("Conversation");
conversation.addIdProperty().autoincrement();
Property parentConversation = message.addLongProperty("parentConversation")
.getProperty();
Property messages = conversation.addLongProperty("messages").getProperty();
message.addToOne(conversation, parentConversation);
conversation.addToMany(message, messages);
編集3
conv.getMessageList();
今のところ、私がこの回線を実行していると呼び出す代わりに、それは正常に動作します。
List<Message> messageList = MessageDao.queryBuilder()
.where(Properties.parentConversation.eq(conv.getId())
.list()
これらすべての実装において、私またはgreenrobotにとって大きな問題だと思います。
これは上記のコードを実行する際の問題Session.runInTx
ですか?