Hibernate hat Probleme mit Annotations

  • Themenstarter Themenstarter Tobias Köhler
  • Beginndatum Beginndatum
So, mit den Annotations klappt jetzt alles. Nun möchte ich zum ersten Mal Daten speichern. Um mein Problem zu beschreiben muss ich allerdings etwas ausholen.
Vereinfacht gesagt habe ich 2 Klassen(Class und Article). Zwischen diesen gibt es eine 1:N-Beziehung(Class kann mehrere Article haben, Article jeweils nur eine Class). Folglich muss nun in der Article-Tabelle ein Fremdschlüssel sein oder, wie ich jetzt in Hibernate weiß, folgender Code:
Java:
@ManyToOne(optional = false)
@JoinColumn(name = "class_id")
public ErpClass getErpClass()
{
	return erpClass;
}
Um zu sichern, dass die Daten konsistent bleiben, benutze ich Transaktionen. Hier liegt das Problem: Wie kann ich einem Article nun eine Class zuweisen, wenn ich dies aber in getrennten Transaktionen laufen lasse. Code zum verdeutlichen:
Java:
Transaction transaction = session.beginTransaction();
try
{
	ErpClass erpClass = new ErpClass();
	erpClass.setName("FD");			
	transaction.commit();
}
catch(Exception e){transaction.rollback();System.out.println(e);}
finally{session.close();}
		
transaction = session.beginTransaction();
try
{
	Article article = new Article();
	article.setErpClass(.......) // wie soll ich das hier machen?		
	transaction.commit();
}
catch(Exception e){transaction.rollback();System.out.println(e);}
finally{session.close();}
Ich hoffe, ich habe mein Problem verständlich beschrieben
LG Tobias
 
Die elegante Variante wäre auf JPA zu setzen und den ganzen Session Kram sein zu lassen. Grundsätzlich musst du entweder die ErpClass nochmal laden (byPrimaryKey) oder diese halt in die neue Transaktion mergen (mit JPA: em.merge(erpClass)).

Grundsätzlich solltest du dir den Gefallen tun und Hibernate hinter JPA benutzen. Von deinen 19 Zeilen Code oben sind eigentlich nur 6 fachlich relevant. Warum so viel technischen Code schreiben, wenn dir das wer abnehmen kann.

Gruß
Ollie
 
Zurück