Je suis un nouveau à db4o. J'ai un gros problème avec la persistance d'un graphique d'objets. J'essaie de migrer de l'ancien composant de persistance vers new, en utilisant db4o.db4o problème avec le graphique des objets
Avant peristed tous les objets de son graphe ressemblait ci-dessous (Jetez un oeil à champ de chaîne Zrodlo.Metadane.abstrakt avec la valeur ciblée) [son point de vue de debuger éclipse] avec un code:
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
Après cela, j'ai essayé de le lire avec un code:
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();
}
et je l'ai eu (photo ci-dessous) - champ de chaîne "Abstrakt" est null maintenant !!! Je l'examine en utilisant ObjectManager (image ci-dessous) et le champ abstrakt n'a pas de valeur nulle ici !!! La même valeur, celle sur la 1ère photo.
alt text http://img341.imageshack.us/img341/1170/objectmanagerview.png
S'il vous plaît aidez-moi :) Il est mon deuxième jour avec db4o. Merci d'avance!
Je joins un code avec la structure de classe persistante:
EncjaDanych public class { Plan mapaIdRepo = new HashMap(); public Map mapaNazwaRepo = new HashMap(); }
!!!!!!!! MISE À JOUR: Quand j'ai essayé de lire seul objet Metadane (il n'y avait qu'un tel objet), il est tout droit - c'est champ chaîne abstrakt pourrait être lu correctement.
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();
}
Merci pour votre aide! Ça marche! :) –