3 Replies Latest reply on Oct 17, 2005 8:51 AM by henderson_mk

    newbie: problem persisting multiple objects

    henderson_mk

      Hi folks,
      Been playing around with seam for the past day or so and am liking it, but have run into some diffs...

      I've created a page to register a property and then the registerPropertyAction is like this:

      @Scope(EVENT)
      @Name("registerProperty")
      public class RegisterPropertyAction
      {
       /**
       * Register a property
       */
       @IfInvalid(outcome=REDISPLAY)
       public String register()
       {
       log.info("registering property");
       List existing = propertyDatabase.createQuery(
       "select streetName1 from Address where streetName1=:address")
       .setParameter("address", address.getStreetName1())
       .list();
      
       String result = null;
       if (existing.size() == 0)
       {
       property.setAddress(address);
       log.info("property=" + property);
       propertyDatabase.persist(property);
       propertyDatabase.flush();
       result = "success";
       }
       else
       {
       facesContext.addMessage(null, new FacesMessage("Property already exists"));
       result = null;
       }
      
       log.info("registered user");
       return result;
       }
      
       /**
       * Is the property object to register.
       */
       @In @Valid
       private Property property;
      
       /**
       * Is the addres object for the property.
       */
       @In @Valid
       private Address address;
      
       /**
       * Is the property database.
       */
       @In(create=true)
       private Session propertyDatabase;
      
       /**
       * Is the JSF Context.
       */
       @In
       private FacesContext facesContext;
      


      what I'm finding though is I can call it once... but then if I try to call it again I'm getting:
      21:28:07,859 INFO [RegisterPropertyAction] registering property
      21:28:07,875 INFO [STDOUT] Hibernate: select address0_.streetName1 as col_0_0_
      from Address address0_ where address0_.streetName1=?
      21:28:07,875 INFO [RegisterPropertyAction] property=org.mhenderson.turnaround.d
      omain.Property@132e6fd[id=0,address=org.mhenderson.turnaround.domain.Address@db2
      a34[id=0,streetName1=dsfds,streetName2=sdfds,streetName3=fdsfds,city=sdfds,count
      y=,country=,postCode=],bathroomCount=0,bedroomCount=0,receptionCount=0]
      21:28:07,875 INFO [STDOUT] Hibernate: insert into Property (address_id, bedroom
      Count, receptionCount, bathroomCount, id) values (?, ?, ?, ?, null)
      21:28:07,875 INFO [STDOUT] Hibernate: call identity()
      21:28:07,875 INFO [STDOUT] Hibernate: insert into Address (country, city, count
      y, streetName1, streetName2, streetName3, postCode, id) values (?, ?, ?, ?, ?, ?
      , ?, ?)
      21:28:07,875 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: null
      21:28:07,875 ERROR [JDBCExceptionReporter] failed batch
      21:28:07,875 ERROR [AbstractFlushingEventListener] Could not synchronize databas
      e state with session
      org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch updat
      e
       at org.hibernate.exception.SQLStateConverter.handledNonSpecificException
      (SQLStateConverter.java:91)
       at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.j
      ava:79)
       at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelp
      er.java:43)
       at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:
      200)
       at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
      
       at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
      
       at org.hibernate.event.def.AbstractFlushingEventListener.performExecutio
      ns(AbstractFlushingEventListener.java:296)
       at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlus
      hEventListener.java:27)
      


      any help would really *really* be appreciated...

      Thanks

      Marty