RE: [flexcoders] Re: FDS/Hibernate - LazyInitializationException when writing AMF output
Hi PW, I'd suggest that we add you to the latest Data Services beta because either we have fixed this issue, or we will fix this issue in the next release. Can you contact me off-list and I'll add you to the beat so you can test DS with the latest DS and hibernate assembler. Thanks Eric Flex PM From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of parkerwhirlow Sent: Friday, February 16, 2007 7:06 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] Re: FDS/Hibernate - LazyInitializationException when writing AMF output This is happening from FDS... flex.data.assemblers.HibernateAssembler uses a function called fetchObjectProperties() that's supposed to load them all while the session is open right? I've seen in other posts that FDS eager fetches the properties in the Assembler, so that they are available during serialization... am I missing something here? thanks, PW --- In flexcoders@yahoogroups.com mailto:flexcoders%40yahoogroups.com , Dima Gutzeit [EMAIL PROTECTED] wrote: Hi, You have to initialize the collections before AMF serializes them. The problem occurs since you closing Hibernate session without first initializing the arrays, and since you are using lazy initialization the problem arise. You have two options : 1. Use lazy=false 2. Better one, is calling /Hibernate.initialize(your_array_reference);/ before you close the Hibernate session. Regards, Dima Gutzeit. parkerwhirlow wrote: Hi again =) I've just started getting this exception inconsistently... sometimes it happens 3 times in a row, other times I can go all afternoon without getting it. Once the exception occurs, it will occur every time the client loads until FDS is restarted. Note this occurs on multiple collections. I tried setting the offending collection to lazy=false (in Hibernate), and the exception occurred on a different collection. I can't set every one of my collections to lazy=false. Especially since at this point, they HAVE to be lazy for the updateItem via hierarchical values to almost work. I also noticed that the collection does not necessarily need to have any items in it. (And possibly is caused specifically by NOT having any items in it, I can't tell for sure). The collection referenced in the exception below has no values, and there's another collection in that same class with values that doesn't seem to cause the exception. See below the hibernate mapping, and exception output when this occurs. (Note there are no FDS managed associations for this collection) Thanks for any insight you have as to what is causing this. PW _ joined-subclass name=Adult table=T_ADULT extends=Person key column name=ID length=22 / /key set name=children inverse=false cascade=all-delete-orphan key column name=PARENTID length=22 not-null=false / /key one-to-many class=Person / /set ... /joined-subclass 10:19:42,093 WARN ProxyWarnLog - Narrowing proxy to class config.test.Adult - this operation breaks == 10:19:44,687 ERROR LazyInitializationException - failed to lazily initialize a collection of role: config.test.Adult.children, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: config.test.Adult.children, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializ ationException(AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializ ationExceptionIfNotConnected(AbstractPersistentCollection.j ava:350) at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractP ersistentCollection.java:97) at org.hibernate.collection.PersistentSet.size(PersistentSet.java:139) at java.util.ArrayList.init(ArrayList.java:133) at flex.messaging.io.ArrayCollection.init(ArrayCollection.java:44) at flex.messaging.io.amf.Amf3Output.writeArrayCollection(Amf3Output.java:40 7) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:147) at flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:215 ) at flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:495) at flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:467) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:165) at flex.messaging.io.amf.Amf3Output.writeObjectArray(Amf3Output.java:730) at flex.messaging.io.amf.Amf3Output.writeAMFArray(Amf3Output.java:386) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:151) at flex.messaging.io.ArrayCollection.writeExternal(ArrayCollection.java:97) at flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:485) at flex.messaging.io.amf.Amf3Output.writeArrayCollection(Amf3Output.java:41 4)
Re: [flexcoders] Re: FDS/Hibernate - LazyInitializationException when writing AMF output
I found that error when some complex object graph return to FDS and FDS can't deal with that complex object, so throws that huge error stack. I solve it returning a more simple object or String. Hope that helps... On 2/17/07, parkerwhirlow [EMAIL PROTECTED] wrote: This is happening from FDS... flex.data.assemblers.HibernateAssembler uses a function called fetchObjectProperties() that's supposed to load them all while the session is open right? I've seen in other posts that FDS eager fetches the properties in the Assembler, so that they are available during serialization... am I missing something here? thanks, PW --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.com, Dima Gutzeit [EMAIL PROTECTED] wrote: Hi, You have to initialize the collections before AMF serializes them. The problem occurs since you closing Hibernate session without first initializing the arrays, and since you are using lazy initialization the problem arise. You have two options : 1. Use lazy=false 2. Better one, is calling /Hibernate.initialize(your_array_reference);/ before you close the Hibernate session. Regards, Dima Gutzeit. parkerwhirlow wrote: Hi again =) I've just started getting this exception inconsistently... sometimes it happens 3 times in a row, other times I can go all afternoon without getting it. Once the exception occurs, it will occur every time the client loads until FDS is restarted. Note this occurs on multiple collections. I tried setting the offending collection to lazy=false (in Hibernate), and the exception occurred on a different collection. I can't set every one of my collections to lazy=false. Especially since at this point, they HAVE to be lazy for the updateItem via hierarchical values to almost work. I also noticed that the collection does not necessarily need to have any items in it. (And possibly is caused specifically by NOT having any items in it, I can't tell for sure). The collection referenced in the exception below has no values, and there's another collection in that same class with values that doesn't seem to cause the exception. See below the hibernate mapping, and exception output when this occurs. (Note there are no FDS managed associations for this collection) Thanks for any insight you have as to what is causing this. PW _ joined-subclass name=Adult table=T_ADULT extends=Person key column name=ID length=22 / /key set name=children inverse=false cascade=all-delete-orphan key column name=PARENTID length=22 not-null=false / /key one-to-many class=Person / /set ... /joined-subclass 10:19:42,093 WARN ProxyWarnLog - Narrowing proxy to class config.test.Adult - this operation breaks == 10:19:44,687 ERROR LazyInitializationException - failed to lazily initialize a collection of role: config.test.Adult.children, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: config.test.Adult.children, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException (AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected (AbstractPersistentCollection.j ava:350) at org.hibernate.collection.AbstractPersistentCollection.readSize( AbstractPersistentCollection.java:97) at org.hibernate.collection.PersistentSet.size(PersistentSet.java:139) at java.util.ArrayList.init(ArrayList.java:133) at flex.messaging.io.ArrayCollection.init(ArrayCollection.java:44) at flex.messaging.io.amf.Amf3Output.writeArrayCollection(Amf3Output.java:407) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:147) at flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:215) at flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:495) at flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:467) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:165) at flex.messaging.io.amf.Amf3Output.writeObjectArray(Amf3Output.java:730) at flex.messaging.io.amf.Amf3Output.writeAMFArray(Amf3Output.java:386) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:151) at flex.messaging.io.ArrayCollection.writeExternal(ArrayCollection.java:97) at flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:485) at flex.messaging.io.amf.Amf3Output.writeArrayCollection(Amf3Output.java:414) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:147) at flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java:215) at flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:495) at flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:467) at