2012-09-09 25 views
0

我有一個db4o的問題,我無法修復。 我有2個班。類中的列表不會在數據庫中更新

public class Profile { 
    private String Name; 
    private List<Action> Actions; 

    public String getName() { 
     return Name; 
    } 

    public void setName(String Name) { 
     this.Name = Name; 
    } 

    public List<Action> getActions() { 
     if (Actions == null) 
      Actions = new ArrayList<Action>(); 
     return Actions; 
    } 
} 

和其他類。

public class Action { 
    private String _Name; 

    public Action(String Name) { 
    _Name = Name; 
    } 

    public String getName() { 
    return _Name; 
    } 
} 

事情是當我在db4o第一次存儲配置文件和行動列表保存良好。當我更新(添加或刪除操作列表中的項目)它不會反映在數據庫(db4o)。

我做什麼來保存數據只是爲了db4o.store(Profile)。我不知道如果也許我必須存儲列表像db4o.store(Profile.Actions)。

任何幫助,將不勝感激。

問候。

回答

1

看起來您的更新深度設置不正確。要更新Profile類的內部列表,您需要使用更高的更新深度設置您的配置。請參閱db4o參考中的this articlethis article

對於List,我建議更新深度爲2或更高。

EmbeddedConfiguration configuration = Db4oEmbedded.newConfiguration(); 
configuration.common().objectClass(Profile.class).updateDepth(2); 

2的更新深度將更新下到Action對象一路,包括Action本身(我相信),因此,如果您更改Action這已經在列表中,它會更新過。請小心,因爲將更新深度設置得過高可能會導致性能問題。

+0

我不知道爲什麼我以前試過這個,並沒有工作......但現在我再次嘗試和像一個魅力工作... – Rothariger

+0

@Rothariger只是很高興的位翻轉正確的方式第二次:) – Brian