Это очень распространенная ситуация, но я вроде как использую ORM, особенно в Android, так что ваша помощь будет потрясающей.
Область действия: Объект, например, Message имеет примитивные поля иполе (дочерний элемент) другого объекта, например, Обсуждение.Так выглядит:
public class Message {
private int id;
private String text;
private Discussion discussion;
public Message(int id, String text, int discussionId){
this.id=id;
this.text=text;
discussion = new Discussion (discussionId);
}
}
public class Discussion {
private int id;
private String title;
public Discussion(int id) {
this.id = id;
this.title = "Sample title";
}
}
note :: id предоставляется сервером, поэтому он устанавливается вручную.
Проблема: как вы знаете, несколько сообщений могут принадлежать одному обсуждению.Но когда я сохраняю список сообщений, я получаю таблицу с дублирующимися обсуждениями (того же размера, что и таблица сообщений).Как этого избежать?
Вот как я храню Message ArrayList:
ArrayList<Message> itemsList = new ArrayList<Message>;
itemsList.add(new Message(1, "Message 1", 50));
itemsList.add(new Message(2, "Message 2", 50));
ItemDBProvider dbProvider = new ItemDBProvider();
for (Item item:itemsList) {
dbProvider.store(item);
}
dbProvider.getDB().commit();
dbProvider.close();
Я имею в виду, что каким-то образом db4o должен проверить, находится ли объект обсуждения в db (по полю "id") и ограничить создание дубликата.Это реально?