Это очень распространенная ситуация, но я новичок в использовании 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 должен проверять, находится ли объект обсуждения в базе данных (по полю «id»), и ограничивать создание дубликатов. Это реально?