Hibernate liefert mir bei many-to-one leeres Feld

markusk21

Mitglied
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):
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);
	    }
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:
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);
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?
 
S

SlaterB

Gast
Zeile 6-8 im unteren Code sind etwas seltsam
> hochschule = tmpListe.get(1);
> wg = tmpListe.get(1).getWg(); // wieso nochmal tmpListe.get(1), das ist doch dasselbe wie die kürzere Variable hochschule?
> hochschule.setWg(wg); // wieso in der hochschule dieselbe wg erneut setzen?

allgemein ist nicht ersichtlich warum die Hochschule in tmpListe nun eine Wg haben sollte, kann doch sein dass diese nicht gesetzt ist?
der erste Code sagt mehr oder weniger aus, dass alle Hochschulen, die Personen zugeordnet sind, eine Wg haben,
aber vielleicht gibts noch andere Hochschulen?
gibt jeweils die Id der Hochschule mit aus, schau auch in der Datenbank-Tabelle nach, wie dort die Situation ist

-----

> <property column="Hochschule" name="Hochschule" ...

Java-Attribute besser klein schreiben genau wie die Klassenattribute, getter und setter dazu groß
 
Zuletzt bearbeitet von einem Moderator:

markusk21

Mitglied
Danke erst mal für die Antwort!

Ja, es wird irgendwann mal so sein, dass auch keine WG gesetzt ist - aber es soll bitteschön erst mal wenigstens das gehen.

Wie ich schon schrieb, in der Datenbank ist alles, wie ich es erwarte.
tmpListe.get(1) (Es ist die "MHH Hannover") hat eine wg! In der Datenbank (Tabelle hochschulen) steht bei Datensatz 2 (wie erwartet) wgId=1. Und das ist (auch erwartungsgemäß) "Hannover" in der Tabelle WGs.
 
S

SlaterB

Gast
hmm,

hier noch zwei Symptom-Tester:
1.)
Mapping ändern oder eine zweite Klasse auf dieselbe DB-Tabelle mappen, das Id-Feld als normales Attribut laden, steht dann was drin?
2.) Hibernate erlaubt auch SQL-Queries:
session.createSQLQuery("select WgId, Name from Hochschulen");
usw.
wie siehts dort auf, Ids vorhanden?

aber egal was rauskommt, richtig erklären kann es nichts,
entweder die Id wird dort angezeit, dann weiß man immer noch nicht wieso im Mapping nicht,
oder die Id fehlt dort auch, dann ist das konsistent aber man weiß immer noch nicht wieso sie überall fehlt

die Daten sind auch wirklich schon länger da und nicht Teil einer noch nicht kommiteten Transaktion oder so?
führe aus einem SQL-Tool z.B.
update hochschule set Name = 'Hannover 96' where wgId = was auch immer;
wenn das commited wird, und auch in Hibernate so ankommt aber die Id dort immer noch fehlt ist weiter was faul,
wenn aber die Id fehlt und der Name noch der alte ist, dann passt das eher zusammen
 

markusk21

Mitglied
Also der Reihe nach:
Java:
	java.util.List<Object[]> tmpListe2 = session.createSQLQuery("select WgId, Hochschule from Hochschulen").list();
	for (int i = 0; i<tmpListe2.size();i++){
	    System.out.println("Hochschule: " + (String)tmpListe2.get(i)[1] + " WgId: " + (Integer)tmpListe2.get(i)[0]);
	}
liefert:
Code:
Hochschule: Uni Hannover WgId: 1
Hochschule: MHH Hannover WgId: 1
Hochschule: FH Hannover WgId: 1
Hochschule: TU Braunschweig WgId: 2
Hochschule: FH Kiel WgId: 6
Hochschule: Uni Kiel WgId: 6
Hochschule: WG Berlin WgId: 3
Hochschule: WG Freiburg WgId: 5
Hochschule: WG Köln WgId: 4

ids sind also da.

Ich habe dann auch mal
Code:
UPDATE HOCHSCHULEN SET HOCHSCHULE='MH Hannover' WHERE HOCHSCHULEID=2
ausgeführt (im hsql-Database-Manager) - funktioniert und kommt im Java-Programm an.
Die Daten liegen in einer hsqldb, server-mode, die Daten sind also im klartext einsehbar.
In der serverTest.log steht (am Ende):
SQL:
/*C72*/SET SCHEMA PUBLIC
ROLLBACK
DISCONNECT
/*C73*/SET SCHEMA PUBLIC
ROLLBACK
DISCONNECT
/*C63*/SET SCHEMA PUBLIC
DELETE FROM HOCHSCHULEN WHERE HOCHSCHULEID=2
INSERT INTO HOCHSCHULEN VALUES(2,'MH Hannover',1)
COMMIT
Alle anderen Werte stehen in der serverTest.script (Auszug):
SQL:
INSERT INTO WGS VALUES(1,'Hannover')
INSERT INTO WGS VALUES(2,'Braunschweig')
INSERT INTO WGS VALUES(3,'Berlin')
INSERT INTO HOCHSCHULEN VALUES(1,'Uni Hannover',1)
INSERT INTO HOCHSCHULEN VALUES(2,'MHH Hannover',1)
INSERT INTO HOCHSCHULEN VALUES(3,'FH Hannover',1)
INSERT INTO HOCHSCHULEN VALUES(4,'TU Braunschweig',2)
 

markusk21

Mitglied
Also,
es scheint, als wäre (fast) alles in Ordnung.
Es trafen nur 2 Probleme aufeinander:
1) meine ComboBox funktioniert noch nicht und
2) im Debugger von netbeans werden die Daten eben nicht angezeigt.

Festgestellt hab ich das erst, nachdem ich auf die altmodische Art System.out.printlin bemüht habe...
Back to the Roots...

Vielen Dank, SlaterB, für die Mühe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Hibernate - Querry mit Eingrenzung und Order; liefert nichts zurück Datenbankprogrammierung 4
Y Hibernate - 1:1 Beziehung liefert leeres Objekt Datenbankprogrammierung 19
krgewb Hibernate: Fremdschlüssel wird nicht erzeugt Datenbankprogrammierung 2
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
T org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ..., could not initialize proxy - no Session Datenbankprogrammierung 5
T Realisierungsvorschläge Hibernate SQL Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
OnDemand Hibernate Realationen Datenbankprogrammierung 7
OnDemand Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
OnDemand Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
P erste Schritte mit Hibernate Datenbankprogrammierung 3
V Hibernate Interfaces von anderem Projekt Datenbankprogrammierung 2
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
B Hibernate und portierbare Datenbank Datenbankprogrammierung 3
qwerqer [Hibernate] Mappingvarianten Datenbankprogrammierung 2
lumo Teneo Hibernate & JPA Datenbankprogrammierung 15
Z JPA mit Hibernate - Unable to build EntityManagerFactory Datenbankprogrammierung 7
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
K Hibernate vs. JDBC Datenbankprogrammierung 4
J Hibernate Info 593 ? Datenbankprogrammierung 4
J Erstellen der SessionFactory in Hibernate 4.1 Datenbankprogrammierung 2
L PostgreSQL Hibernate-Frage Datenbankprogrammierung 2
X MySQL Hibernate: Massenupdate auf unbekannte Tabelle Datenbankprogrammierung 4
N hibernate: datasource Datenbankprogrammierung 7
H MySQL Hibernate: Updaten vereinfachen Datenbankprogrammierung 2
T Hibernate Division zweier Summen Datenbankprogrammierung 4
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4

Ähnliche Java Themen


Oben