I'm testing the ODMG layer with this example:

   /**
     *  Update the Traente instance on the database
     */

    public void update() {

        Database db = odmg.newDatabase(); // the current DB
        Transaction tx = null;
        //open database
        try {
            db.open("default", Database.OPEN_READ_WRITE);
        } catch (ODMGException ex) {
            ex.printStackTrace();
        }

        tx = odmg.newTransaction();
        String oqlQuery = "select edit from " +
                traente.className +
                " where id = " + traente.getId();
        try {
            tx = odmg.newTransaction();
            tx.begin();

            OQLQuery query = odmg.newOQLQuery();
            query.create(oqlQuery);
            DList result = (DList) query.execute();
            Traente toBeEdited = (Traente) result.get(0);

            tx.lock(toBeEdited, Transaction.UPGRADE);

            toBeEdited = traente;
            tx.commit();
        } catch (Throwable t) {
            // rollback in case of errors
            tx.abort();
            t.printStackTrace();
        }finally {
            try {
                db.close();
                System.out.println("DB closed!!!!");
            } catch (ODMGException ex) {
                ex.printStackTrace();
            }
        }
    }


where 'traente' is a class attribute that rapresents the updated object that
i would like to persist.

After the method invocation .... the database still contains the old object,
while retrieving again the reference 'toBeEdited' it seems to be updated.
What do I miss? I'm using a test class on JBuilder, without any particular
deployement enviroment.

Thanks in advance

Massimiliano Farnea

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to