Я не вижу, где вы закрываете и снова открываете базу данных.
В любом случае, я просто запускаю ваш код (с некоторыми изменениями, например, для повторного открытия базы данных), и он действительно получает Serie правильно, то есть с его эпизодом.
См. Код ниже:
import java.io.*;
import java.net.*;
import java.util.*;
import com.db4o.*;
public class Db4o {
static final String path = System.getenv("temp") + "\\test.odb";
public static void afficher(ObjectContainer db) {
ObjectSet<Serie> result = db.queryByExample(Serie.class);
while (result.hasNext()) {
System.out.println(result.next());
}
}
public static void main(String[] args) throws MalformedURLException {
ObjectContainer db = null;
try {
new File(path).delete();
db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), path);
System.err.println("it's connectetd");
Serie s1 = new Serie("Kungfu Panda");
File file = new File(
"E:\\Series\\Word pic\\250px-Kung_Fu_Panda_-_Legends_of_Awesomeness_logo.jpg");
s1.setPicfile(file.toString());
Episode episode = new Episode(4, "The magic Po", "Kungfu Panda");
s1.setEpisode(episode);
db.store(s1);
// Reopen the database
db.close();
db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), path);
afficher(db);
} finally {
db.close();
}
}
}
class Serie {
private String name;
private String picfile;
private Vector<Episode> episodes = new Vector<Episode>();
public String getPicfile() {
return picfile;
}
public void setPicfile(String picfile) {
this.picfile = picfile;
}
public Serie(String name) {
this.name = name;
}
public Vector<Episode> getEpisodes() {
return episodes;
}
public void setEpisode(Episode e) {
this.episodes.add(e);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Serie{" + "name=" + name + ", picfile=" + picfile
+ ", episodes=" + episodes + '}';
}
}
class Episode {
private int numbre;
private String title;
private String serieName;
public Episode(int numbre, String titl, String serieName) {
this.numbre = numbre;
this.title = titl;
this.serieName = serieName;
}
public Episode() {
}
public String getSerieName() {
return serieName;
}
public void setSerieName(String serieName) {
this.serieName = serieName;
}
public int getNumbre() {
return numbre;
}
public void setNumbre(int numbre) {
this.numbre = numbre;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String toString() {
return "{" + "Episode=" + numbre + " , title=" + title + '}';
}
}
Обратите внимание, что в конструкторе Episode произошла ошибка:
public Episode(int numbre, String titl, String serieName) {
this.numbre = numbre;
this.title = title; // WRONG. Need to be: this.title = titl;
this.serieName = serieName;
}