Martin -

This is what has me confused.  I don't believe that Hibernate's FLUSHMODE is 
even being set and I am starting to question if that is because of how I am 
using JPA in conjunction with Hibernate with Spring's transaction management 
system.

<bean id="entityManagerFactory" 
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="persistenceXmlLocation" 
value="classpath*:META-INF/persistence.xml" />
  <property name="persistenceUnitName" value="pu-mrohub" />
  <property name="dataSource" ref="dataSource" />
  <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
      <property name="database" value="SQL_SERVER" />  
      <property name="showSql" value="false" />
      <property name="generateDdl" value="false" />                             
                
    </bean>
  </property>                                           
</bean>
 
<bean id="transactionManager" 
class="org.springframework.orm.jpa.JpaTransactionManager">
  <property name="entityManagerFactory" ref="entityManagerFactory" />
  <property name="dataSource" ref="dataSource" />
</bean>

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/mssqlserver" 
resource-ref="true"/>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="sessionFactory" factory-bean="entityManagerFactory" 
factory-method="getSessionFactory" />

I question if this is because I am using the JpaTransactionManager?  
I checked Hibernate's FlushMode and it's being set to AUTO.

> -----Original Message-----
> From: Martin Gainty [mailto:mgai...@hotmail.com]
> Sent: Wednesday, March 09, 2011 9:59 PM
> To: Struts Users Mailing List
> Subject: RE: Re : Re : ModelDriven & Hibernate Entities
> 
> 
>  osiv filter (should) set flushing to never (now manual) to prevent
> accidental writes on the session so
> 
>         Map<String, String> properties = new HashMap<String, String>();
>         properties.put( "org.hibernate.flushMode", "manual" );
>         javax.persistence.EntityManager em = createEntityManager(
> properties );
>         em.getTransaction().begin();
> 
>     /* * always reopen a new EM and clse the existing one*/
>     protected EntityManager createEntityManager(Map properties) {
>         if ( em != null && em.isOpen() ) {
>             em.close();
>         }
>         em = factory.createEntityManager( properties );
>         return em;
>     }
> 
> http://docs.jboss.org/hibernate/core/3.2/api/org/hibernate/FlushMode.ht
> ml
> 
> Martin
> ______________________________________________
> Verzicht und Vertraulichkeitanmerkung/Note de déni et de
> confidentialité
> 
> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede
> unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig.
> Diese Nachricht dient lediglich dem Austausch von Informationen und
> entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten
> Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt
> uebernehmen.
> Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas
> le destinataire prévu, nous te demandons avec bonté que pour satisfaire
> informez l'expéditeur. N'importe quelle diffusion non autorisée ou la
> copie de ceci est interdite. Ce message sert à l'information seulement
> et n'aura pas n'importe quel effet légalement obligatoire. Étant donné
> que les email peuvent facilement être sujets à la manipulation, nous ne
> pouvons accepter aucune responsabilité pour le contenu fourni.
> 
> 
> 
> 
> > Subject: RE: RE: Re : Re : ModelDriven & Hibernate Entities
> > Date: Wed, 9 Mar 2011 17:08:01 -0600
> > From: chris.cranf...@setech.com
> > To: user@struts.apache.org
> >
> > In the Struts2 Action rather than my service class?
> >
> > > -----Original Message-----
> > > From: Maurizio Cucchiara [mailto:maurizio.cucchi...@gmail.com]
> > > Sent: Wednesday, March 09, 2011 4:20 PM
> > > To: Struts Users Mailing List
> > > Subject: Re: RE: Re : Re : ModelDriven & Hibernate Entities
> > >
> > > Have you tried to put the transational annotation in the class
> > > declaration?
> > >
> > > Maurizio Cucchiara
> > >
> > > Il giorno 09/mar/2011 21.38, "CRANFORD, CHRIS"
> > > <chris.cranf...@setech.com>
> > > ha scritto:
> > > > 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
> > > >
> >
> >
> > ---------------------------------------------------------------------
> > 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

Reply via email to