我是db4o的新手。對於圖形對象的持久性,我有一個很大的問題。我正嘗試使用db4o從舊的持久性組件遷移到新的組件。db4o對象圖問題
在我peristed所有對象其圖形看起來像下面(看看用聚焦值Zrodlo.Metadane.abstrakt字符串字段)[其從蝕debuger視圖]與代碼:
ObjectContainer db=Db4o.openFile(DB_FILE); try { db.store(encja); db.commit(); } finally{ db.close(); }
alt text http://img139.imageshack.us/img139/4609/beforesave.png
在那之後,我試着用代碼來閱讀:
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();
}
,我得到它(圖片下方) - 串場「巴丁格」現在是空! alt text http://img412.imageshack.us/img412/7162/aftersave.png
我使用ObjectManager(下面的圖片)來看看它,並且abstrakt字段有非空值!相同的價值,在第一張照片。
alt text http://img341.imageshack.us/img341/1170/objectmanagerview.png
請幫我:)這是我的第二天使用db4o。提前致謝!
我附上一些碼使用持續類的結構:
公共類EncjaDanych { 地圖mapaIdRepo =新的HashMap(); public Map mapaNazwaRepo = new HashMap(); }
!!!!!!!!更新: 當我試圖只讀Metadane對象(只有一個這樣的對象),這是所有權利 - 這是串場巴丁格可以正確讀取。
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();
}
謝謝你的幫助!有用! :) – 2010-05-16 18:57:41