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]