Black_Panter
Ensign
- Registriert
- Mai 2006
- Beiträge
- 197
Hi,
ich habe mit Hibernate Objecte in eine Datenbank gemappt.
Session: http://pastebin.com/xtvyJ7Pu
SessionEntry: http://pastebin.com/zV8fuEx3
Zugehörige XML zum mappen: http://pastebin.com/G9ANpTFR
Dabei ist in Session die Variabel "session" in der Datenbank "Primary Key" und in der Klasse SessionEntry sind es die Variablen "sessionId" und "id".
In der Tabelle "session_entry" referenziert das Feld "sessionId" auf das feld "session" in der Tabelle "session".
Das Mappen an sich funktioniert auch problemlos und die Daten werden Ordnungsgemäß in die Datenbank eingefügt.
Probleme bereitet mir jetzt das auslesen.
Ich finde keine möglichkeit, wie ich unter angabe einer Session mir ein "Session"-Object automatisch erstellen lasse. Gibt es da eine möglichkeit oder muss ich mir alle Werte auslesen lassen und das "Session"-Object manuel zusammenbauen?
In Pseudo-Code soll das ganze in etwa so aussehen:
Viele Grüße
Sören
Inzwischen habe ich rausgefunden, wie ich ein Object bekomme. Dabei ist mir jedoch ein mir gerade nicht erklärbares Phänomen aufgefallen, wesswegen ich es auch nicht zum laufen bekommen habe.
Dieser Code Funktioniert
Wenn ich jedoch versuche das "sessionObject" nach "session.close()" zu verwenden, bekomme ich folgende Exception:
Woran liegt das? Und wie kann ich das beheben?
ich habe mit Hibernate Objecte in eine Datenbank gemappt.
Session: http://pastebin.com/xtvyJ7Pu
SessionEntry: http://pastebin.com/zV8fuEx3
Zugehörige XML zum mappen: http://pastebin.com/G9ANpTFR
Dabei ist in Session die Variabel "session" in der Datenbank "Primary Key" und in der Klasse SessionEntry sind es die Variablen "sessionId" und "id".
In der Tabelle "session_entry" referenziert das Feld "sessionId" auf das feld "session" in der Tabelle "session".
Das Mappen an sich funktioniert auch problemlos und die Daten werden Ordnungsgemäß in die Datenbank eingefügt.
Probleme bereitet mir jetzt das auslesen.
Ich finde keine möglichkeit, wie ich unter angabe einer Session mir ein "Session"-Object automatisch erstellen lasse. Gibt es da eine möglichkeit oder muss ich mir alle Werte auslesen lassen und das "Session"-Object manuel zusammenbauen?
In Pseudo-Code soll das ganze in etwa so aussehen:
Code:
Verbindung verbindung = new Verbindung() ;
SessionObject so = verbindung.get(sessionId);
verbindung.close()
Viele Grüße
Sören
Ergänzung ()
Inzwischen habe ich rausgefunden, wie ich ein Object bekomme. Dabei ist mir jedoch ein mir gerade nicht erklärbares Phänomen aufgefallen, wesswegen ich es auch nicht zum laufen bekommen habe.
Dieser Code Funktioniert
Code:
String id = "153.100.131.14.1306901695176828";
objects.Session sessionObject = null;
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
sessionObject = (objects.Session) session.get(objects.Session.class, id);
System.out.println(sessionObject.toString());
session.close();
Wenn ich jedoch versuche das "sessionObject" nach "session.close()" zu verwenden, bekomme ich folgende Exception:
Code:
Exception in thread "main" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: objects.Session.sessionEntrys - no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:191)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:183)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:48)
at org.hibernate.collection.PersistentList.iterator(PersistentList.java:106)
at objects.Session.toString(Session.java:155)
at logic.Main.main(Main.java:31)
Woran liegt das? Und wie kann ich das beheben?