2 Replies Latest reply on Dec 12, 2010 4:48 AM by shtv

    Couldn't override update method

    shtv

      Hello!


      I have some problems with EntityHome. I do the same work as one in reference (this chapter: http://docs.jboss.org/seam/2.2.1.CR2/reference/en-US/html/framework.html ). My method works but Hibernate always updates given record. Even if my update method is blank. Below my source:




      @Name("stageHome")
      public class StageHome extends EntityHome<StagesSchedule> {
      
           static final long serialVersionUID = 1L;
      
           @Factory("stage2")
           public StagesSchedule initStagesSchedule() {
                return getInstance();
           }
      
           protected StagesSchedule createInstance() {
                return new StagesSchedule();
           }
      
           /*
           protected String getUpdatedMessageKey() {
                return "stage_updated";
           }
           */
      
           public String update() {
                return "";
                /*
                try {
                     validate();
                     return "";
      //               return super.update();
                } catch(ValidatorException e){
                     getFacesMessages().add(e.getFacesMessage());
                     return null;
                }
                */
           }
      
           public String persist() {
                return "";
           };
      
           public String remove() {
                return "";
           };
      
           /*
           private void validate() {
                StagesSchedule schedule = getInstance();
                if(schedule.getBegin().after(schedule.getEnd()))
                     throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,"Validation failed!",null));
           }
           */
      
      }





           <ui:define name="body">
      
                <h:dataTable value="#{stages}" var="_stage" rendered="#{not empty stages}">
                     <h:column>
                          <f:facet name="header">
                               <h:outputText value="Name"/>
                          </f:facet>
                          <h:outputText value="#{_stage.name}"/>
                     </h:column>
                     <h:column>
                          <f:facet name="header">
                               <h:outputText value="Begin date"/>
                          </f:facet>
                          <h:outputText id="begindate" datePattern="dd-MM-yyyy" value="#{_stage.begin}">
                               <s:convertDateTime pattern="dd-MM-yyyy"/>
                          </h:outputText>
                     </h:column>
                     <h:column>
                          <f:facet name="header">
                               <h:outputText value="End date"/>
                          </f:facet>
                          <h:outputText id="enddate" datePattern="dd-MM-yyyy" value="#{_stage.end}">
                               <s:convertDateTime pattern="dd-MM-yyyy"/>
                          </h:outputText>
                     </h:column>
                     <h:column>
                          <f:facet name="header">
                               <h:outputText value="Action"/>
                          </f:facet>
                          <s:link value="Edit">
                               <f:param name="stageId" value="#{_stage.id}"/>
                          </s:link>
                     </h:column>
                </h:dataTable>
      
                <h:form rendered="#{stageHome.managed}">
                     <h:inputText value="#{stage2.name}"/>
                     <rich:calendar id="begin1" datePattern="dd-MM-yyyy" value="#{stage2.begin}"/>
                     <rich:calendar id="end1" datePattern="dd-MM-yyyy" value="#{stage2.end}"/>
                     <h:commandButton value="Update" action="#{stageHome.update}"/>
                </h:form>
      
           </ui:define>





      <?xml version="1.0" encoding="UTF-8"?>
      <page xmlns="http://jboss.com/products/seam/pages"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.2.xsd">
      
                <param name="stageId" value="#{stageHome.id}" converterId="javax.faces.Integer"/>
      
      </page>



      Thanks for reply!

        • 1. Re: Couldn't override update method
          antibrumm.mfrey0.bluewin.ch

          Hi
          Most probably you have the conversation in autoflush mode. So each select etc. calls a flush and commit. You have to use flushmode manual, flushmode none or work with detached entities.

          • 2. Re: Couldn't override update method
            shtv

               <navigation from-action="#{stagesScheduleHome.persist}">
                  <rule if-outcome="persisted">
                     <end-conversation/>
                     <redirect view-id="/StagesSchedule.xhtml"/>
                  </rule>
               </navigation>



            You're right. Thanks a lot!