-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: Application erzeugt Objekte nicht in der Datenbank
PostPosted: Mon Sep 20, 2010 7:42 am 
Newbie

Joined: Mon Sep 20, 2010 7:09 am
Posts: 3
Hallo zusammen,

meine Frage bezieht sich auf den Methodenaufruf id = session.save(obj); in public Serializable storeObject(Object obj) {...},welche sich in der Klasse HibernatePersistence befindet.

Ich würde gerne durch die Benutzung von storeObject mehrere Objekte, welche über IDs verknüpft sind, hintereinander in eine SQL-Datenbank schreiben, jedoch bleibt die JVM beim 2ten Objekt bei id = session.save(obj); hängen und nichts passiert, es wird nichteinmal eine HibernateException geworfen.

Ich habe bereits diverse Sachen ausprobiert, beispielsweise mit flush() oder commit(), aber dann bleibt die JVM schon beim flush() hängen, oder die Reihenfolge der Objekte, welche ich schreiben will, verändert. Bei all meinen Versuchen bin ich aber nicht einen einzigen Schritt weiter gekommen.

Gibt es vielleicht irgend welche wichtigen Punkte auf welche ich nicht geachtet haben könnte?
Ich bin mitlerweile seit 3 Tagen am verzweifeln deswegen :-/ Hoffe ihr könnt mir ein paar Tipps geben!


MfG,

Julian


Top
 Profile  
 
 Post subject: Re: Application erzeugt Objekte nicht in der Datenbank
PostPosted: Mon Sep 20, 2010 8:41 am 
Senior
Senior

Joined: Tue Oct 28, 2008 10:39 am
Posts: 196
Warum suchst du nach Möglichkeiten in der Klasse HibernatePersistence?!? Man speichert entweder über die Session selbst oder wenn man JPA nutzt über den EntityManager.


Top
 Profile  
 
 Post subject: Re: Application erzeugt Objekte nicht in der Datenbank
PostPosted: Mon Sep 20, 2010 8:56 am 
Newbie

Joined: Mon Sep 20, 2010 7:09 am
Posts: 3
hm ich weiß schon was du damit meinst.

Nunja, ich speichere ja auch über die session in einer anderen Klasse, jedoch mehr als die Methode aufrufen nachdem man sich nen HibernatePersistence-Objekt erzeugt hat kann man ja eigtl. auch nicht, und meines Wissens sollte dazu auch nicht mehr nötig sein, aber trotzdem funktionierts nicht.

Daher habe ich eben versucht eine Lösung des Problems über die HibternatePersistence selbst zu finden. Hoffe du verstehst was ich meine :-)

Was ich mir momentan am ehesten denken kann worans liegen könnte wäre, dass ich irgdend etwas bei der erstellen der zu schreibenden Objekte und deren gegenseitige Abhängigkeit verpeilt hab. Aber ich finds einfach nicht :-S

Um genauer darauf einzugehen: Ich erzeuge mir alle Objekte über Dummy-Methoden und stelle die Zusammenhänge über die IDs und Sets mit Setters sicher. Und erst sobald das ganze Schema steht fange ich an die einzelnen Objekte, eins nach dem anderen, in die Datenbank mit der HibernatePersistence ,bzw. der daraus entstandenen session, zu schreiben.


Top
 Profile  
 
 Post subject: Re: Application erzeugt Objekte nicht in der Datenbank
PostPosted: Mon Sep 20, 2010 9:17 am 
Senior
Senior

Joined: Tue Oct 28, 2008 10:39 am
Posts: 196
Julian Reuthlinger wrote:
Um genauer darauf einzugehen: Ich erzeuge mir alle Objekte über Dummy-Methoden und stelle die Zusammenhänge über die IDs und Sets mit Setters sicher. Und erst sobald das ganze Schema steht fange ich an die einzelnen Objekte, eins nach dem anderen, in die Datenbank mit der HibernatePersistence ,bzw. der daraus entstandenen session, zu schreiben.


Also du hast TypA und TypB und in deinen Mappings gibts keine one-to-many oder many-to-one. Das regelst du alles selbst? Soweit korrekt?
Du müsstest dann also zuerst den "Eltern"-Satz an session.save() oder entitymanager.persist() übergeben und dann flush() aufrufen. Dann sind deine Objekte an die zugrundeliegende Session "gelinkt" und das ID-Feld (sofern von der DB befüllt oder von Hibernate per Sequence) gefüllt. Dessen Wert kannst du auslesen und in die "Kind"-Objekte packen.
Habe ich das soweit richtig verstanden? Wenn ja, erhältst du Fehlermeldungen oder bleibt wirklich alles einfach stehen? Am besten mal auf den "Standardweg" mit session/entitymanager umstellen und den von mir skizzierten Ablauf laufen lassen. Wenn das nicht geht, bitte die Mappings, die DB-Konfiguration, den relevanten Code-Abschnitt und die Log-Ausgaben posten.


Top
 Profile  
 
 Post subject: Re: Application erzeugt Objekte nicht in der Datenbank
PostPosted: Mon Sep 20, 2010 10:40 am 
Newbie

Joined: Mon Sep 20, 2010 7:09 am
Posts: 3
Nunja nicht ganz korrekt.
Ich habe mehrfache one-to-many und auch many-to-one Beziehungen.

Den Rest hast du schon richtig verstanden, bis darauf, dass ich (da ich an einem Projekt weiterarbeite von jemandem anders, und dieser das so angelegt hat) nicht die parent-ID dem child geben, sondern dem child das parent-objekt und dem parent ein Set<Child_Class> übergebe. Daher da dann auch die one-to-many Beziehungen beispielsweise :-)

Lasse ich die Application nun laufen, so bleibts einfach hängen, und ich bekomme keine Fehlermeldungen.

Hier ein Beispiel, wie ichs mache:
Code:
{

Set<AAA> listOfAAA = new HashSet<AAA>();
Set<AA> listofAA = new HashSet<AA>();
//........ usw.

createObjectDummy_AAA();
createObjectDummy_AAA();
createObjectDummy_AAA();
AA = createObjectDummy_AA();
for (AAA item : listOfAAA){
     item.setParent(AA);
}
AA.setListOfAAAs(listOfAAAs);

A = createObjectDummy_A();
for (AA item : listOfAA){
     item.setParent(A);
}
A.setListOfAAs(listOfAAs);

HibernatePersistence persistence = new HibernatePersistence();
//flush() wird in storeObject() aufgerufen!

persistence.storeObject(A);

for (AA aa : listOfAAs){
     persistence.storeObject(aa);
}

for (AAA aaa : listOfAAAs){
     persistence.storeObject(aaa);
}

//..... usw

}


public AAA createObjectDummy_AAA(){
      AAA aaa = new AAA();
      aaa.setAttributes(null);
      //.......
      listOfAAA.add(aaa);
     
      return aaa;
}

public AA createObjectDummy_AA(){
      AA aa = new AA();
      aa.setAttributes(null);
      //........     
      listOfAA.add(aa);

      return aa;
}



Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.