And again, what is your value for current_session_context_class? This defaults (still I think) to ThreadLocalSessionContext (current_session_context_class = thread), which tries to open a session magically (when it finds a transaction context). Like it's documentation says, this implementation is problematic, and JTASessionContext (current_session_context_class = jta) or ManagedSessionContext (current_session_context_class = managed) provide better alternatives. In case you use managed (which I'm using), something needs to prepare the session (and clean it up again). PersistenceFilter does for servlet requests. *If* you're not in a servlet request, using WorkManager directly is one of the ways you can do it.
Eelco On Tue, Feb 2, 2010 at 1:55 PM, Eelco Hillenius <[email protected]> wrote: > Keep in mind though, that you want to call beginWork before calling > any @Transactional annotated method. The filter (the one I gave may be > specific for the 2.0 snapshot I'm using) is the easiest way to go. > Though I use WorkManager directly often in e.g. unit test, patching > code, etc. > > Eelco > > On Tue, Feb 2, 2010 at 1:34 PM, Maurixio <[email protected]> wrote: >> I try it with the WorkManager and it works .. thanks =) >> >> public List<Pattern> search(Application app) { >> unitOfWork.beginWork(); >> Criteria criteria = session.get().createCriteria >> (Pattern.class); >> criteria.add((Expression.eq("idApp",app))) >> .add(Expression.ne("isCon", false)) >> .addOrder(Order.desc("priority")); >> return criteria.list(); >> List<Pattern> result = criteria.list(); >> unitOfWork.endWork(); >> return result; >> } >> >> >> On Feb 2, 3:52 pm, Eelco Hillenius <[email protected]> wrote: >>> What is your value for current_session_context_class? If it is managed >>> (which is the value I think is best), then you need to prepare >>> sessions through using WorkManager (beginWork/ endWork, and this is >>> Guice managed, so you can have it injected). Or if you're in a servlet >>> environment, use wideplay's persistence filter, e.g. like: >>> >>> public class ServletsModule extends ServletModule { >>> @Override >>> protected void configureServlets() { >>> filter("/*").through(PersistenceFilter.class); >>> >>> Eelco >>> >>> >>> >>> On Tue, Feb 2, 2010 at 6:35 AM, Maurixio <[email protected]> wrote: >>> > Hello everyone ... after reading the Dependency Injection book (love >>> > this book btw) im trying to put up a project with Guice , Warp and >>> > Hibernate ... I have been trying a lot of thing the last week ... and >>> > i cant make it work .. >>> > im getting : >>> > org.hibernate.HibernateException: No session currently bound to >>> > execution context (<property >>> > name="current_session_context_class">managed</property>) >>> > or >>> > org.hibernate.SessionException: Session is closed! (<property >>> > name="current_session_context_class">thread</property>) >>> >>> > The configure of guice is like >>> > protected void configure() { >>> > install(PersistenceService.usingHibernate().across >>> > (UnitOfWork.REQUEST).buildModule()); >>> > bind(Configuration.class).toInstance(new >>> > AnnotationConfiguration().configure()); >>> > ... >>> > bind(MyInitializer.class).asEagerSingleton(); >>> > } >>> >>> > the MyInitializer.class is like : >>> > .. >>> > @Inject MyInitializer(PersistenceService service) { >>> > service.start(); >>> > } >>> > .. >>> >>> > and im using it like: >>> >>> > private final Provider<Session> session; >>> >>> > @Inject >>> > public HibernateFooManager(Provider<Session> session) { >>> > this.session = session; >>> > } >>> >>> > @Transactional(type=TransactionType.READ_ONLY) >>> > public List<Foo> search(Application app) { >>> > Criteria criteria = session.get().createCriteria >>> > (Pattern.class); >>> > criteria.add((Expression.eq("idApp",app))) >>> > .add(Expression.ne("isCon", false)) >>> > .addOrder(Order.desc("priority")); >>> > return criteria.list(); >>> > } >>> >>> > Can someone help me , to see what im doing wrong? >>> >>> > -- >>> > You received this message because you are subscribed to the Google Groups >>> > "google-guice" group. >>> > To post to this group, send email to [email protected]. >>> > To unsubscribe from this group, send email to >>> > [email protected]. >>> > For more options, visit this group >>> > athttp://groups.google.com/group/google-guice?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "google-guice" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/google-guice?hl=en. >> >> > -- You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.
