Hi David,
das größte Problem steht natürlich schon direkt am Anfang des Threads, aber das habe ich natürlich beim bloßen Draufgucken auch übersehen. Du hast den Vector ids als static deklariert, was natürlich wenig Sinn macht, da Du ja mit einer Instanz von ID arbeiten willst. Anbei ist ein Beispiel, wo es jetzt meiner Meinung nach funktioniert, kannst Du ja mal testen. Die Ausgabe ist das, was man erwartet:
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Grüße, Maik
import java.io.File;
import java.util.Vector;
import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.config.Configuration;
public class ID {
Vector<Integer> ids = new Vector<Integer>();
public void addId(int i) {
ids.add(i);
}
public String toString() {
return ids.toString();
}
public static void main(String[] args) {
new File("test.yap").delete();
Configuration config = Db4o.newConfiguration();
config.objectClass(ID.class).cascadeOnUpdate(true);
// Anlegen eines ID-Behälters
ObjectContainer db = Db4o.openFile(config, "test.yap");
db.store(new ID());
db.commit();
db.close();
// Jetzt öffnen, lesen, updaten und schließen wir die Datenbank 10mal.
// Das Öffnen/Schließen ist nur für den Test so gemacht,
// in produktiven Anwendungen bleibt die Datenbank natürlich geöffnet.
for (int i = 0; i < 10; i++) {
db = Db4o.openFile(config, "test.yap");
ID id = (ID) db.queryByExample(ID.class).next();
id.addId(i);
db.store(id);
db.commit();
System.out.println(db.queryByExample(ID.class).next());
db.close();
}
}
}
http://db4o.blogspot.com/