Hello, I guess you have to do the 2 steps in the same way with PB API. Database constraints needs the same sequence of insert/update.
If using PB API, i don't think you're dealing with rollback ability, if not, write the 2 steps as it were 2 standalone PB processes and it should work. Else, find out how to flush with PB API (post queries without commit). Regards On 6 Dec 2006 18:15:07 -0000, Virgo Smart <[EMAIL PROTECTED]> wrote:
Hello, Is there a way to do the same using Persistence Broker APIs ? Thanks and Regards, Gautam. On Wed, 06 Dec 2006 Bruno CROS wrote : >The circular references have to be build in 2 steps : > >First, create instances and link one relation. >Flush (write SQL insert and update) >Second, link with the second relation (in back side). >Commit. > >Your example : > >tx.begin(); >d = new Drawer(); >f = new Finish(); >tx.lock(d); >tx.lock(f); >d.setFinish(f); >((ExtTransaction) tx).flush() // post INSERT queries >f.setDrawer(d); >tx.commit(); > >If you have to delete one object, you have to break the circular reference >in the same way. > >tx.lock(d); >d.setFinish(null); >ExtTx.flush(); // post UPDATE set FINISHPK=null >Impl.getDatabase().deletePersistent(f); >tx.commit(); > >Don't change java class definition (circular references relations), write >your processes as you should do with JDBC only. > >Bruno. > >On 12/6/06, Armin Waibel <[EMAIL PROTECTED]> wrote: >> >>Hello, >> >>I have a scenario in which there are two classes which reference each >>other. Eg. class Drawer references Finish and Finish references Drawer. >>When I attempt to persist Drawer instance, an exception is thrown >>suggesting that we cannot add or update a child row: a foreign key >>reference fails. >> >>Is there a way to correct this problem without changing the Java class >>definitions ? >> >>Thanks and Regards, >>Gautam. >> >> >>--------------------------------------------------------------------- >>To unsubscribe, e-mail: [EMAIL PROTECTED] >>For additional commands, e-mail: [EMAIL PROTECTED] >> >>