Это очень распространенная ситуация, но я новичок в ORM, особенно в Android, поэтому ваша помощь будет потрясающей.
Область применения: Объект, например. Сообщение имеет примитивные поля и поле (дочерние элементы) другого объекта, например. Обсуждение. Так выглядит:
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" ) и ограничивает создание дубликата. Это реально?