I think filters were designed for this kind of job
Have you seen this?
http://stackoverflow.com/questions/4988397/gwt-requestfactory-how-to-use-single-entitymanager-per-requestOn Sun, Mar 27, 2011 at 7:27 PM, rwiatr <rwiatr@gmail.com> wrote:
Thanks for the response Nooonika.
Unfortunately it doesn't work for me. I'm looking for a mechanism to
open a session before request is processed and close after (or
something like that).
Here's something that works, at least for now.
public class SessionRequestFactoryServlet extends
RequestFactoryServlet {
private static final ThreadLocal<Session> perThreadSession = new
ThreadLocal<Session>();
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException
{
perThreadSession.set(HibernateUtil.getSessionFactory().openSession());
try {
super.doPost(request, response);
} finally {
perThreadSession.get().close();
perThreadSession.set(null);
}
}
public static Session getPerThreadSession() {
return perThreadSession.get();
}
}
in the DAO object:
@Transient
public static List<HierarchyImpl> rootHierarchyRequest() {try {
Session session = SessionRequestFactoryServlet
.getPerThreadSession();
List<HierarchyImpl> hList = new ArrayList<HierarchyImpl>(session
.createQuery("from Hierarchy where parent is null").list());
return hList;And a servlet entry in web.xml
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
<servlet-class>app.server.requestfactory.SessionRequestFactoryServlet</
servlet-class>
RequestFactoryServet uses ThreadLocal variables so I guess it's ok.
Anyone knows a more suitable way to achieve this? I don't have any
experience with such thing and I'm afraid it can cause much more
problems in the future. Anyone has any suggestions?
On 27 Mar, 16:20, Nooonika <nooon...@gmail.com> wrote:
> Try: Hibernate.initialize(hList);
>
> On Mar 27, 11:47 am, rwiatr <rwi...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Hello,
> > I have a problem with RequestFactory and Hibernate session.
> > [hibernate.LazyInitializationException] - failed to lazily initialize
> > a collection of role: app.server.dao.HierarchyImpl.children, no
> > session or session was closed
>
> > @OneToMany(cascade = CascadeType.ALL)
> > @JoinTable(name = "HIERARCHY_RELATE", joinColumns =
> > { @JoinColumn(name = "parent_id") }, inverseJoinColumns =
> > { @JoinColumn(name = "child_id") })
> > public Set<HierarchyImpl> getChildren() {
> > return children;
> > }
>
> > public static List<HierarchyImpl> rootHierarchyRequest() {
> > int i = 0;
> > try {
> > SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
> > Session session = sessionFactory.openSession();
> > List<HierarchyImpl> hList = new ArrayList<HierarchyImpl>(session
> > .createQuery("from Hierarchy where parent is null").list());
> > session.close();
> > return hList;
> > } catch (Exception e) {
> > e.printStackTrace();
> > }
> > return null;
> > }
> > Adding FetchType.EAGER helps but in long terms will not solve my
> > problem.
> > Is there a good way to manage Hibernate session by RequestFactory?
--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
No comments:
Post a Comment