-->
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.  [ 8 posts ] 
Author Message
 Post subject: Gibt es eine Art OpenSessionInViewInterceptor auch für Swin
PostPosted: Wed Jul 27, 2005 8:53 am 
Beginner
Beginner

Joined: Sun Apr 24, 2005 4:25 am
Posts: 28
Hi,

ich verwende Hibernate im Zusammenhang mit Swing. Jetzt weiß ich, dass es in Spring beispielsweise einen OpenSessionInViewInterceptor gibt. Aber was mache ich in Swing.

Dort bekomme ich ständig eine Exception

Code:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ecobill.module.base.domain.BusinessPartner.bills - 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.PersistentSet.equals(PersistentSet.java:319)
   at ecobill.module.base.domain.BusinessPartner.equals(BusinessPartner.java:207)
   at test.PersistenceTest.testBusinessPartner(PersistenceTest.java:216)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter.java:31)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at com.intellij.rt.execution.application.AppMain.main(AppMain.java:86)


Danke


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 27, 2005 10:35 am 
Hibernate Team
Hibernate Team

Joined: Mon Aug 25, 2003 9:11 pm
Posts: 4592
Location: Switzerland
Wie, Swing? Du musst schon etwas mehr verraten ueber deine Architektur wenn dir jemand sagen soll wo du da einen interceptor findest.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 27, 2005 10:51 am 
Beginner
Beginner

Joined: Sun Apr 24, 2005 4:25 am
Posts: 28
Hi,

das Problem bei mir ist wenn ich in meinen Mappings die Set auf lazy loading gestellt habe, ich mir dann ein Objekt von der DB lade, die Session dann geschlossen ist und ich dann das Set aus dem Objekt laden möchte bringt er mir eben diese Fehlermeldung.

Ist ja auch logisch wenn die Session geschlossen ist. Kann diese leider nicht offen halten, da das ein TransactionManager übernimmt.

Ich arbeite auch mit Spring, aber nur zum initialisieren des Containers, danach hol ich mir die Beans über einen ClassPathXmlApplicationContext in Swing.

Hoffe es ist ein bischen verständlicher.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 27, 2005 10:58 am 
Hibernate Team
Hibernate Team

Joined: Mon Aug 25, 2003 9:11 pm
Posts: 4592
Location: Switzerland
Aeh, nein. Es ist immernoch nicht klar ob du mehrere VMs hast oder wie die Schichten in der Applikation aussehn.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 27, 2005 11:00 am 
Hibernate Team
Hibernate Team

Joined: Mon Aug 25, 2003 9:11 pm
Posts: 4592
Location: Switzerland
Vielleicht solltest du dir statt der Fummelei mit Spring mal die Grundlagen dieser Muster anschauen:

http://hibernate.org/42.html
http://hibernate.org/43.html


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 27, 2005 11:23 am 
Beginner
Beginner

Joined: Sun Apr 24, 2005 4:25 am
Posts: 28
Ich habe Spring schon eingerichtet und da es mit Springs HibernateDaoSupport sowieso die absolute Ähnlichkeit mit diesem HibernateUtils hat glaube ich nicht, dass dadurch mein Problem behoben werden kann.

Wie gesagt es geht darum, dass bei Dir bspw auch hier danach

Code:
public Item getItemById(Long itemId) {
    return (Item) HibernateUtil.getSession().load(Item.class, itemId);
}


die Session wieder geschlossen wird.

Das Problem bei mir ist doch, dass ich in diesem Beispiel ein Item zurückbekommen würde (soweit funktioniert das ja auch), aber wenn ich dieses Item nun mit einem anderen Item vergleiche (euqals) und ein Set descriptions habe und dieses in meinem Mapping mit lazy="true" definiert habe bringt er doch eine LazyInitializationException wenn ich dieses in der equals Methode mit getDescriptions() anfordere, oder sehe ich das immernoch falsch?

Sorry für meine Dummheit, hoffe die geht bald weg.

Danke


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 27, 2005 11:28 am 
Hibernate Team
Hibernate Team

Joined: Mon Aug 25, 2003 9:11 pm
Posts: 4592
Location: Switzerland
Ja, sicher, was soll auch sonst passieren wenn die Session zu ist? Also entweder findest Du einen interceptor in den du ein session.close() stecken kannst, und der zum richtigen (spaeten) Zeitpunkt ausloest, oder du selektierst alle Daten die du brauchst. Gibt keine andere Loesung...


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 27, 2005 11:29 am 
Hibernate Team
Hibernate Team

Joined: Mon Aug 25, 2003 9:11 pm
Posts: 4592
Location: Switzerland
Das steht uebrigens auf den Seiten die du gerade halb gelesen hast. Bitte nochmal lesen.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 8 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.