Elmesélem laza 1 napos szívásom/szivatásom történetét.
Történt, hogy a jelenlegi projektünkhöz olyan emberkékre bízták az adatbázis struktúra tervezését, akik még hírből sem hallottak aa modern kor technológiáiról. Mindenféle vastag kliens szerű dolgokhoz vannak szokva, ahhol a felület robosztussága bőven képes elrejteni az adatstuktúra hiányosságait, logikátlanságait.
Tehát kedves kollegák felvették (többször, vagyis több táblában is a következő adatszerkezetet: ( a mezőnevek fontosak)
Master tábla A mezői ID és MEZO2 valamint egyéb esetünkben lényegtelen elemek. Természetesen a az ID és a MEZO2 adja a primary key-t.
Az ehhez tartozó detail tábla: B mező ID, MEZO2, A_ID és egyebek, ennek a táblának primary key-e szintén természetesen az ID és a MEZO2. Ezzel még nem is lenne probléma, ha nem követték volna el, hogy az A táblára mutató foreign key a MEZO2 és A_ID. Ugyebár ezzel megint csak nincs probléma, adatbázis oldalon tökéletesen lekezelhető, nem is beszélve a vastag kliens technológiákról. Igenám, de mi teljesen őrült ötlettől vezérelve J2EE alapokon áltunk neki mndenféle finom perzisztencia rétegek alkalmazva. De ezek a dögök a composite primary key-ekre külön osztályt hoznak létre, oszt mindenáron használni is akarják. vagyis a vége egy insert műveletnek, hogy szerencsétlen nem tudja, hogy a 4 mezőből, amiből 2 ugyan az, melyik is reprezentálja az adatbázisban fizikailag létező hármat. Ugyanis, felismeri, hogy a primary key és a foreig key egy-egy eleme ugyan arra a mezőre hivatkozik, tehát sikít, hogy ő ezt így nem szeretné. Ilyenkor az ember megmondja neki, hogy jó, akkor mivel a primary key-t szeretnénk előállítani ezért a foreign key-ben lévő azonos mező insert, update-jét kikapcsoljuk. Viszont ekkor fogja magát és a foreign key másik mezőjét yól nem adja hozzá az inserthez.
folytatás
Meglőn a megoldás primary key-be raktam mind a 3 mezőt és a foraign key-t komplette kikapcsoltam az írás/olvasás múveletekből (insertable = false, updatable = false. Egyenlőre müx, most végig kell gyalogolnom az entitásokon és ahhol ilyen van, ott szépen meg kell gyártanom ez a hekket