2010-07-17 75 views
0

我有一個類Event和一個依賴類Entry,哪些實例只在事件上下文中有效。更新依賴對象的集合

在JDO中對此進行建模的最佳方法是什麼? Acrtally我不想查詢僅用於事件及其條目的條目。那麼我需要在Entry上使用密鑰嗎?

我目前的解決辦法是:

@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; 
} 

我試圖添加到現有的事件中的條目,但它並沒有實際上可以持續改變的事件:

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(); 
    } 
} 

添加註釋和返回語句之間的行後,所有條目都顯示正確。