I still think this is related to my @Transactional annotation maybe. > -----Original Message----- > From: Dave Newton [mailto:davelnew...@gmail.com] > Sent: Wednesday, March 09, 2011 2:16 PM > To: Struts Users Mailing List > Subject: Re: Re : Re : ModelDriven & Hibernate Entities > > Another reason OSiV filters can be tricky. > > Dave > > On Wed, Mar 9, 2011 at 2:04 PM, CRANFORD, CHRIS > <chris.cranf...@setech.com> wrote: > > Francois - > > > > I use the standard paramsPrepareParamsStack interceptor from Struts. > > > > All I have done on my end is wrap this interceptor stack with a few > application specific interceptors that control things such as > authentication required, auditing, and logging. I stepped upon my > issue one day when I had returned from lunch and my session had timed > out. I hit the SAVE button on a form and it redirected me to our login > page. > > > > But prior to logging back in; I checked the database and noticed that > the record was in fact persisted with the changes from the form. All I > can gather is the following: > > > > 1. Request comes in for Struts > > 2. Hibernate Session opened via OSIV > > 3. Model is loaded from DB via prepare() > > 4. Struts copies parameters into the model > > 5. Validation/Interceptors fire > > 6. Authentication Interceptor detects timed out session, returns > LOGIN > > 7. User presented with login page > > 8. OSIV filter closes, changes from #4 persisted. > > > > I then created a simple test action where I load a persist entity > from the DB in a ModelDriven action, I call the action passing > parameters that are properties on the entity. Then the execute() > method does nothing more than return SUCCESS which maps to my > /pages/done.jsp. The changes are committed. > > > > I'd prefer that changes aren't committed unless I explicitly call to > do so on the EntityManager; however I understand Hibernate/JPA's > reasons behind why it works the way it does. > > > > > > > >> -----Original Message----- > >> From: François Rouxel [mailto:rouxe...@yahoo.com] > >> Sent: Wednesday, March 09, 2011 12:24 PM > >> To: Struts Users Mailing List > >> Subject: Re : Re : ModelDriven & Hibernate Entities > >> > >> Hi Chris, > >> first, > >> you might have another pb, because struts2 does not change your > model > >> if a > >> validation failed. In may case, the model is not changed so not > >> persisted. Do u > >> use validation and workflow interceptor ? > >> second, > >> you are right about MVC pattern, but, just be aware that when you > use > >> OSIV > >> pattern, hibernate call backend service when loading data...:-)) so > >> your JSP is > >> not just a view in that case.... > >> > >> > >> I wrote my first mail thinking you wanna rollback after an exception > >> occured. > >> maybe it's gonna help others. > >> > >> fr/ > >> > >> > >> ____________________________________________ > >> ____________________________________________ > >> > >> > >> > >> ----- Message d'origine ---- > >> De : "CRANFORD, CHRIS" <chris.cranf...@setech.com> > >> À : Struts Users Mailing List <user@struts.apache.org> > >> Envoyé le : Mer 9 mars 2011, 13h 09min 33s > >> Objet : RE: Re : ModelDriven & Hibernate Entities > >> > >> Francois - > >> > >> While that may work for you, I wouldn't place anything Hibernate or > >> persistence > >> related in my JSP pages at all. In my mind, this breaks the entire > >> reasoning > >> behind MVC and the view simply there to render data. If the view is > >> doing > >> anything beyond that, I have a design problem, but again that's my > >> opinion. > >> > >> But what about when you use the INPUT result code in your execute() > >> method. > >> > >> If I return the user to the INPUT method because maybe I'm not using > >> the Struts > >> validation framework and doing it myself in my execute() method or I > >> have some > >> complex conditions I must check for before I save the data. In this > >> case, by > >> returning INPUT and setting some action field or error messages to > be > >> shown to > >> the user, the error exception handler isn't fired, thus your > rollback > >> isn't > >> fired either; leaving your entity persisted with likely dirty data. > >> > >> > -----Original Message----- > >> > From: François Rouxel [mailto:rouxe...@yahoo.com] > >> > Sent: Wednesday, March 09, 2011 11:43 AM > >> > To: Struts Users Mailing List > >> > Subject: Re : ModelDriven & Hibernate Entities > >> > > >> > same issue > >> > this how I fixed it : (the main idea is to redirect to a jsp if > an > >> > exception > >> > occured, and the jsp rollback) > >> > > >> > create an error page error.jsp > >> > <%@page import="com.rdvcentral.util.persistance.HibernateUtil"%> > >> > <%@ page contentType="text/html;charset=UTF-8" language="java" %> > >> > <%@ taglib prefix="s" uri="/struts-tags" %> > >> > <%@ taglib prefix="sj" uri="/struts-jquery-tags" %> > >> > > >> > > >> > <%@page import="org.hibernate.Transaction"%> > >> > <%@page import="org.apache.log4j.Logger"%> > >> > > >> > <s:property value="%{logError(exception)}"/> > >> > <% > >> > Transaction tx = new > >> > > >> > HibernateUtil().getSessionFactory().getCurrentSession().getTransaction( > >> > ); > >> > if (tx != null && tx.isActive()) { > >> > tx.rollback(); > >> > } > >> > %> > >> > > >> > In your struts mapping file : > >> > > >> > <global-results> > >> > <result name="unhandledException">/error.jsp</result> > >> > </result> > >> > </global-results> > >> > > >> > <global-exception-mappings> > >> > <exception-mapping exception="java.lang.Exception" > >> > result="unhandledException" /> > >> > </global-exception-mappings> > >> > > >> > hope it will help you > >> > > >> > > >> > ____________________________________________ > >> > ____________________________________________ > >> > > >> > > >> > > >> > ----- Message d'origine ---- > >> > De : "CRANFORD, CHRIS" <chris.cranf...@setech.com> > >> > À : Struts Users Mailing List <user@struts.apache.org> > >> > Envoyé le : Mer 9 mars 2011, 12h 34min 32s > >> > Objet : ModelDriven & Hibernate Entities > >> > > >> > I had started down a path of using the ModelDriven interface from > >> > Struts > >> > because I find it really helps maintain a class action class > without > >> > large numbers of get/set methods for screens that contain a lot of > >> form > >> > fields. > >> > > >> > However, I am finding at least with how I have attempted to > approach > >> > ModelDriven to have several drawbacks. For example, by using the > >> OSIV > >> > (Open Session In View) filter, I am finding that when Struts sets > the > >> > properties on the entity and afterward if an exception is thrown, > >> > caught > >> > and handled and doesn't trigger Hibernate to actually "rollback"; > the > >> > changes are persisted which leaves my entity in a dirty > inconsistent > >> > state. > >> > > >> > How have others solved this by using your entity domain POJOs in > your > >> > view? > >> > > >> > Do you use them detached from the session so that you explicitly > have > >> > to > >> > merge them to the session to be persisted? If so, how do you deal > >> with > >> > multiple lazy loaded collections in your entity? > >> > > >> > Or would using DTO objects from my service layer a better > alternative > >> > to > >> > insure that no data is actually persisted to the database that > >> > shouldn't > >> > be? > >> > > >> > > >> > ------------------------------------------------------------------ > --- > >> > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > >> > For additional commands, e-mail: user-h...@struts.apache.org > >> > > >> > > >> > > >> > > >> > ------------------------------------------------------------------ > --- > >> > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > >> > For additional commands, e-mail: user-h...@struts.apache.org > >> > > >> > >> > >> > >> -------------------------------------------------------------------- > - > >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > >> For additional commands, e-mail: user-h...@struts.apache.org > >> > >> > >> > >> > >> -------------------------------------------------------------------- > - > >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > >> For additional commands, e-mail: user-h...@struts.apache.org > >> > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > > For additional commands, e-mail: user-h...@struts.apache.org > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org >
--------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org