Jaki jest poprawny sposób wstawiania nowego obiektu do DB Green-DAO w przypadku relacji dwukierunkowej 1: m?Prawidłowy sposób obsługi dwukierunkowego 1: m na zielono - DAO
Powiedzmy, że mam aplikację do czatu, która ma encję konwersacji i encję wiadomości. każda rozmowa ma listę wiadomości, a każda wiadomość ma rozmowę nadrzędną.
co zrobić już teraz jest:
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???
wydaje mi się, że nie robię tego poprawnie i chciałbym dostać jakąś reklamę wytyczne do właściwego sposób to zrobić.
z góry dzięki ...
EDIT:
jak widać z mojego komentarza, po próby wykonania kodu sposób napisałem tutaj, otrzymuję null
zamiast rozmowy byłem próbuje połączyć.
zmieniłem mojego kodu trochę i teraz wygląda to tak:
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");
}
ale znowu, mój problem jest to, że nie jestem pewien, że połączenie jest teraz dwukierunkowa.
czy powinienem zaktualizować wątkiDao?
Muszę powiedzieć, że to nie działa w prawdziwym życiu, próbowałem tego w moim kodzie, a wynikiem 'msg.getConverstaion()' było 'null'. Musiałem użyć 'msg.setConversation (conv)' – thepoosh
Czy wywołałeś msg.getConversation() przed lub po wstawieniu encji za pomocą DAO? –
Tak, poszedłem dokładnie to, co jest napisane w dokumentacji, ale dostałem wartość zerową. użyłem 'msg.setConversation' i zadziałało, nie jestem pewien, czy zadziałał inny kierunek, i to jest podstawą mojego pytania – thepoosh