2010-07-17 2 views
0

У меня есть класс Event и зависимый класс Entry, экземпляры которого действительны только в контексте события.Обновление коллекции зависимых объектов

Что было бы лучшим способом смоделировать это в JDO? По сути, я не хочу запрашивать записи только для событий и их записей. Так нужен ли мне ключ для входа?

Мое текущее решение:

@PersistenceCapable 
public class Event { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    public Long id; 

    @Persistent 
    public List<Entry> entries = new ArrayList<Entry>(); 
} 

@PersistenceCapable 
public class Entry { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    public Key key; 

    @Persistent 
    public String name; 
} 

Я пытался добавить запись в существующее событие, но оно не acutally сохраняется измененное событие:

Event e = null; 
PersistenceManager pm = PMF.get().getPersistenceManager(); 
try { 
    e = pm.getObjectById(Event.class, Long.parseLong(id)); 

    System.out.println(e.entries.size()); 

    Entry entry = new Entry(); 
    entry.name = name; 

    e.entries.add(entry); 

    pm.makePersistent(e); 

    System.out.println(e.entries.size()); 
} catch (NumberFormatException nfe) { 
    return null; 
} finally { 
    pm.close(); 
} 
return e; 

Я попытался сделать запись Встроенный объект, но не допускается сбор встроенных объектов.

ответ

0

Фактически обновление не было проблемой. Я не загрузил событие должным образом в свою службу.

public Event loadEvent(String id) { 
    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    try { 
     Event event = pm.getObjectById(Event.class, Long.parseLong(id)); 
     // And load entries 
     for (Entry entry : event.getEntries()) { 
      entry.amounts.size(); 
     } 
     return event; 
    } catch (NumberFormatException e) { 
     return null; 
    } finally { 
     pm.close(); 
    } 
} 

После добавления строк между комментарием и оператором возврата все записи были показаны правильно.

Смежные вопросы