I didn't called the sessionContext.setRollbackOnly(). Simply I just call
the return statement.

tx = odmg.currentTransaction();
broker = ((NarrowTransaction)tx).getBroker();

//update the changed document
((NarrowTransaction)tx).markDirty(document);

List origBlock = document.getLogPondBlockList();
if(origBlock != null){                  
        Iterator orig = origBlock.iterator();
        while(orig.hasNext()){
                ((NarrowTransaction)tx).markDirty(orig.next());
        }
}

Collection existed = broker.getCollectionByQuery(query);
LogPond dbLogPond = (LogPond)existed.iterator().next();                 
List dbBlock = dbLogPond.getLogPondBlockList();
if(dbBlock != null){                    
        Iterator i = dbBlock.iterator();
        while(i.hasNext()){
                LogPondBlock dbLogPondBlock = (LogPondBlock)i.next();

                if(document.getLogPondBlock(dbLogPondBlock) == null){
                        ((NarrowTransaction)tx).markDelete(orig.next());

                }else{
                  ///error.. Can't delete this item 
                  ON EXIST OF THIS METHOD, I FOUND THAT THE ABOVE MARK
DIRTY STILL TAKE EFFECT
                  return;       
                }
        }
}

Regards,
Stephen 


>-----Original Message-----
>From: Armin Waibel [mailto:[EMAIL PROTECTED] 
>Sent: 28 November 2003 16:17
>To: OJB Users List
>Subject: Re: Container managed Transaction
>
>
>Hi Stephen,
>
>Stephen Ting wrote:
>> Can i programatic rollback managed transaction in ODMG api?
>> 
>> I have the following challenge.
>> 
>> 1. ((NarrowTransaction)tx).markDirty(document1);
>> 2. ((NarrowTransaction)tx).markDirty(subDoc1);
>> 3. ((NarrowTransaction)tx).markDelete(subDoc2);
>> 
>> In the above sequence, says I excute statement 1 and 2 successfully, 
>> before reaching statement 3 I detected some errors and need to exit 
>> the method and rollback. In my testing, the
>> SQL Statement in 1 and 2 will get excuted.
>What do you do when the error was detected?
>Did you call sessionContext.setRollbackOnly() ?
>Could you post some pseudo code?
>
>Normally 1 and 2 shouldn't be executed when all method
>calls made in a cm-tx.
>
>regards,
>Armin
>
>> My question is can I rollback
>> sql statement 1 and 2 and assume I didn't mark document1 and subDoc1?
>> 
>> Thanks
>> 
>> Regards,
>> Stephen Ting
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> 
>> 
>> 
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>
>


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

Reply via email to