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