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) 之类的东西。

任何帮助,将不胜感激。

问候。

4

1 回答 1

1

看起来您的更新深度设置不正确。要更新类的内部列表Profile,您需要设置具有更高更新深度的配置。请参阅这篇文章和db4o 参考资料中的这篇文章。

对于 a List,我建议更新深度为 2 或更高。

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

更新深度 2 将一直更新到Action对象,包括对象Action本身(我相信),因此如果您更改Action列表中已经存在的对象,它也会更新。请小心,因为将更新深度设置得太高会导致性能问题。

于 2012-09-10T16:27:04.603 回答