You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by cmarcourt <cm...@wanadoo.fr> on 2003/06/26 10:49:22 UTC

Am I missing something for the update

Hi,

update works perfectly well in my application for small modification, says only one setter.
Now I've got a big big form (it's an eight step form). I stored its values in a session during all the time.
I trace the value for a specific field, this value is right to the end.
But when I call the store() method, it's just like these field are not updated in the database.
Here is the java source with the trace.

Say I set the adult capacity to 20.

private void update() {
        Collection c = null;
        java.util.Iterator it = null;
        PersistenceBroker broker = null;
        com.hbk.bean.House house = (com.hbk.bean.House) super.session.getAttribute(Constant.SESSION_HOUSE);
        MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 1 : " + house.getAdultCapacity()); // print 20
        
        if (house!=null) {
            try {
                broker = PersistenceBrokerFactory.defaultPersistenceBroker();
                broker.clearCache();
                
                this.processFinalForm(house);
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 2 : " + house.getAdultCapacity()); // print 20
                house.setModificationDate(new java.util.Date());
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 3 : " + house.getAdultCapacity()); // print 20
                
                Criteria criteria = new Criteria();
                criteria.addEqualTo("id", new Integer(house.getId()));
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 4 : " + house.getAdultCapacity()); // print 20
                QueryByCriteria query = new QueryByCriteria(com.hbk.bean.House.class, criteria);
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 5 : " + house.getAdultCapacity()); // print 20
                
                broker.beginTransaction();
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 6 : " + house.getAdultCapacity()); // print 20
                
                com.hbk.bean.House toBeEdited = (com.hbk.bean.House) broker.getObjectByQuery(query);
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 7 : " + house.getAdultCapacity()); // print 20
                
                toBeEdited.setAdultCapacity(house.getAdultCapacity());
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 8 : " + house.getAdultCapacity()); // print 20
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).debug("adult capacity 9 : " + toBeEdited.getAdultCapacity()); // print 20 (notice the toBeEdited and not the house object, I know it's stupid, but I can't believe it !!!!)
                toBeEdited.setChildCapacity(house.getChildCapacity());
                toBeEdited.setCity(house.getCity());
                toBeEdited.setCountry(house.getCountry());
                toBeEdited.setDisplay(house.isDisplay());
                toBeEdited.setDistrict(house.getDistrict());
                toBeEdited.setHistoricals(house.getHistoricals());
                toBeEdited.setInteriorDescriptions(house.getInteriorDescriptions());
                toBeEdited.setInventory(house.getInventory());
                toBeEdited.setModificationDate(house.getModificationDate());
                toBeEdited.setName(house.getName());
                toBeEdited.setNewProduct(house.isNewProduct());
                toBeEdited.setOutsideDescriptions(house.getOutsideDescriptions());
                //                toBeEdited.setOwner(house.getOwner());
                //                toBeEdited.setPhotos(house.getPhotos());
                toBeEdited.setReference(house.getReference());
                //                toBeEdited.setRooms(house.getRooms());
                toBeEdited.setSellPrice(house.getSellPrice());
                //                toBeEdited.setServices(house.getServices());
                toBeEdited.setStreet1(house.getStreet1());
                toBeEdited.setStreet2(house.getStreet2());
                toBeEdited.setStreet3(house.getStreet3());
                toBeEdited.setSurface(house.getSurface());
                toBeEdited.setType(house.getType());
                toBeEdited.setZipCode(house.getZipCode());
                
                broker.store(toBeEdited);
                broker.commitTransaction();
                
                this.processPhotoFile(house);
            } catch (org.apache.ojb.broker.PersistenceBrokerException pbe) {
                MandarinoLogger.getInstance(Constant.HOUSEBOOKING_LOGGER_NAME).fatal(pbe);
            } finally {
                broker.clearCache();
                broker.close();
            }
        }
}

Do you see a strange thing in my code ?

Christophe