Personally I always tell hibernate to disable lazy loading, I've
found that no matter what web framework you use that problem occurs
(unless you take control and use it in a model 1).
On Sep 29, 2005, at 12:24 PM, Richard Wallace wrote:
The problem is that the bean that holds the list of data for the
table is session scoped. So, on the first request to the page the
hibernate query is done and then you store the resulting List in
the HTTP session. On a subsequent request to the page you try to
access data in the List that you didn't access on a previous
request. Since the List is lazily loaded and you are no longer
operating within the same Hibernate session that was used to do the
query you get the lazy initialization exception.
A general rule of thumb that I've had to adopt is to never put a
Hibernate returned object or List in the HTTP session because if
there is any lazy loading involved, whether they're elements in a
List or properties of an object, you will get the LLE. It's better
just to re-run the query. If you're using the 2nd level cache and
query caching then it's not that much more overhead and much less
work than trying to do something like DTOs.
Rich
Ryan Wynn wrote:
Any hibernate-spring experts out there that could tell me how I
can still get a LazyInit exception inside my spring
OpenSessionInViewFilter. My stack trace clearly says I am inside
the Filter. Exception - No session or session was closed.
This is happening when using the myfaces datascroller for a
datatable and paging. Bean that holds List of data for table is
session scoped.
Unfortunately, the data is a list of hibernate objects. I
probably should be copying these into plain pojos for the view,
but that is not what I am doing. Probably because then I could
need to replicate my entire object tree.