Dobry den, Nicmene kdyby to fungovalo jak je psano v manualu, tak by na jednu adresu bylo zavolano update pouze jednou. Jenze je to zavolano okamzite po nacteni a pak pred Flushnutim.
Ano pred updatem je zavolana metoda equals, ktera porovna starou a novou adresu a vrati "true" a okamzite nato nasleduje update, ktery ulozi dany objekt. Rozhrani UserType primo metodu isDirty nespecifikuje, pouze tam je metoda equals a je jedno jestli tato metoda vrati true, nebo false, stejne je proveden update. Tedy presny postup je takovyto: 1) Nacte se pobocka 2) Nactou se informace o userTypu a vytvori se 3) Zavola se deepCopy (vytvotim novy objekt se stejnyma hodnotama, nebo vratim stary, to je fuk). 4) Zavola se porovnani (vrati se true, nebo false, to je taky fuk) 5) Zavola se deepCopy stejne jako v 3) 6) Provede se "update branch set dateOfChange=?, phoneNumber=?, mobilNumber=?, faxNumber=?, email=?, web=? where id=? and dateOfChange=?" 7) Opet je provedeno deepCopy jako v bodu 3) 8) Nacitaji se dalsi pobocky od bodu 1) 9) Na vsechny nactene Adresy se provede deepCopy jako v 3) 10) Na vsechny Adresy se provede porovnani jako v 4) 11) Vsechny adresy jsou opet updatovany jako v 6) Trochu nechapu co muze dostat dany objekt do dirty stavu, ani kde je ho mozne nastavit. > > Hibernate defaultne vsechny objekty uklada pri flushnuti session, > > protoze vyvojari nejspise usoudili (?), ze je rychlejsi objekt zapsat, > > nez slozite kontrolovat, zda se v nem neco zmenilo. > > to rozhodne neplati, Hibernate tam samozrejme dirty checking ma. > Problem bude zrejme s temi kompozitnimi typy... Zkuste si oddebugovat, > co presne zpusobi, to ze je objekt oznaceny jako dirty. -- Lukas Benda
signature.asc
Description: This is a digitally signed message part.
