Hallo miteinander,
Ich versuche immer noch mit hibernate klar zu kommen und gerade als ich dachte - jetzt läuft es, kommt sowas...
Ich habe eine Klasse Hochschule mit einem many-to-one Objekt wg.
Hier ist das Mapping:
[XML]<hibernate-mapping>
<class name="data.Hochschule" table="hochschulen">
<id column="HochschuleID" name="HochschuleID" type="integer">
<generator class="increment"/>
</id>
<property column="Hochschule" name="Hochschule" not-null="true" type="string" unique="true"/>
<many-to-one column="WgID" name="wg"/>
</class>
</hibernate-mapping>[/XML]
Zur Erklärung: z.B. Hochschulen TU München und Uni München gehören zu einer WG "München".
Dieser code liefert, was ich haben möchte (sogar noch über das Objekt Person):
Dem tmpVector wird also für die Liste sowohl die Hochschule, als auch die wg übergeben.
Ich möchte nun natürlich einer Hochschule aus den vorhandenen WGs eine zuordnen können und möchte das über eine ComboBox realisieren. Der Combobox habe ich die WG-Objekt übergeben, sodass sie direkt ausgewählt werden können.
ich habe jetzt schon den Code auf eine einzige Hochschule reduziert, aber die WG enthält im folgenden Code 0 als wgId und null als wgName:
Ich möchte natürlich irgendwann die ganze Hochschulliste haben, aber zum Testen beschränke ich mich auf .get(1)
Die Instanz hochschule wird mit korrektem namen und id angelegt. Aber die wg hat wie oben geschrieben die Werte wgId = 0 und wgname = null.
In der Datenbank ist alles korrekt abgelegt - ich kann gar nicht sagen, wie oft ich das kontrolliert hab.
Da ich mich mit hibernate nicht auskenne und grad darüber gelesen hab, dachte ich es läge am lazy-loading und hab versucht a) mit initialize die Liste vollständig zu laden und b) wg direkt anzusprechen, weil es ja dann nachgeladen werden sollte.
Ich habe initialize auch mal tmpListe.get(1) übergeben, auch das hat nichts geändert.
Ich weiß nicht mehr wo ich suchen soll - hat jemand eine Idee, wo der Fehler liegt?
Ich versuche immer noch mit hibernate klar zu kommen und gerade als ich dachte - jetzt läuft es, kommt sowas...
Ich habe eine Klasse Hochschule mit einem many-to-one Objekt wg.
Hier ist das Mapping:
[XML]<hibernate-mapping>
<class name="data.Hochschule" table="hochschulen">
<id column="HochschuleID" name="HochschuleID" type="integer">
<generator class="increment"/>
</id>
<property column="Hochschule" name="Hochschule" not-null="true" type="string" unique="true"/>
<many-to-one column="WgID" name="wg"/>
</class>
</hibernate-mapping>[/XML]
Zur Erklärung: z.B. Hochschulen TU München und Uni München gehören zu einer WG "München".
Dieser code liefert, was ich haben möchte (sogar noch über das Objekt Person):
Java:
List starterLst = sess.createQuery( "from data.Person" ).list();
List starterLst = sess.createQuery( "from data.Person" ).list();
for( int i=0; i<starterLst.size(); i++ ) {
data.Person person = (data.Person)starterLst.get( i );
java.util.Vector<String> tmpVector = new java.util.Vector<String>();
tmpVector.add(person.getVorname());
tmpVector.add(person.getNachname());
tmpVector.add(person.getHochschule().getHochschule());
try{
tmpVector.add(person.getHochschule().getWg().getWgName());
}catch(java.lang.NullPointerException ex){
// Die Hochschule hat keine zugehörige WG - Null-wert wird eingesetzt
tmpVector.add(null);
}
Ich möchte nun natürlich einer Hochschule aus den vorhandenen WGs eine zuordnen können und möchte das über eine ComboBox realisieren. Der Combobox habe ich die WG-Objekt übergeben, sodass sie direkt ausgewählt werden können.
ich habe jetzt schon den Code auf eine einzige Hochschule reduziert, aber die WG enthält im folgenden Code 0 als wgId und null als wgName:
Java:
this.session = persistence.HibernateUtil.getSessionFactory().openSession();
java.util.List<data.Hochschule> tmpListe = session.createQuery("from data.Hochschule").list();
org.hibernate.Hibernate.initialize(tmpListe);
hochschule = tmpListe.get(1);
wg = tmpListe.get(1).getWg();
hochschule.setWg(wg);
gui.admin.EinzelneHochschulePanel panel = new gui.admin.EinzelneHochschulePanel(hochschule);
panel.setVisible(true);
this.add(panel);
Die Instanz hochschule wird mit korrektem namen und id angelegt. Aber die wg hat wie oben geschrieben die Werte wgId = 0 und wgname = null.
In der Datenbank ist alles korrekt abgelegt - ich kann gar nicht sagen, wie oft ich das kontrolliert hab.
Da ich mich mit hibernate nicht auskenne und grad darüber gelesen hab, dachte ich es läge am lazy-loading und hab versucht a) mit initialize die Liste vollständig zu laden und b) wg direkt anzusprechen, weil es ja dann nachgeladen werden sollte.
Ich habe initialize auch mal tmpListe.get(1) übergeben, auch das hat nichts geändert.
Ich weiß nicht mehr wo ich suchen soll - hat jemand eine Idee, wo der Fehler liegt?