【发布时间】:2010-05-16 15:30:55
【问题描述】:
我是 db4o 的新手。我对对象图的持久性有一个大问题。我正在尝试使用 db4o 从旧的持久性组件迁移到新的。
在我保留所有对象之前,它的图表如下所示(查看具有焦点值的 Zrodlo.Metadane.abstrakt 字符串字段)[它来自 eclipse 调试器的视图] 带有代码:
ObjectContainer db=Db4o.openFile(DB_FILE); try { db.store(encja); db.commit(); } finally{ db.close(); }
之后,我尝试用代码读取它:
ObjectContainer db=Db4o.openFile((DB_FILE));
try{
Query q = db.query();
q.constrain(EncjaDanych.class);
ObjectSet<Object> objectSet = q.execute();
logger.debug("objectSet.size" + objectSet.size());
EncjaDanych encja = (EncjaDanych) objectSet.get(0);
logger.debug("ENCJA" + encja.toString());
return encja;
}finally{
db.close();
}
我明白了(下图) - 字符串字段“abstrakt”现在为空!!!
我使用 ObjectManager(下图)查看了它,abstrakt 字段在那里有非空值!!!与第一张图片相同的值。
请帮助我 :) 这是我使用 db4o 的第二天。提前致谢!
我正在附加一些具有持久类结构的代码:
公共课 EncjaDanych{ 映射 mapaIdRepo = new HashMap(); 公共地图 mapaNazwaRepo = new HashMap(); }
!!!!!!!!!更新: 当我试图只读取 Metadane 对象(只有一个这样的对象)时,没关系 - 它的字符串字段 abstrakt 可以正确读取。
try{
Query q = db.query();
q.constrain(Metadane.class);
ObjectSet<Object> objectSet = q.execute();
logger.error("objectSet.size" + objectSet.size());
Metadane meta = (Metadane) objectSet.get(0);
logger.debu("Metadane" + meta.toString());
return meta;
}finally{
db.close();
}
【问题讨论】:
标签: db4o