[Java lista] JPA 1.0 Kapcsoló tábla External Id-k

Verhás István istvan at verhas.com
2009. Nov. 27., P, 15:22:33 CET


Nem az a problémája, hogy komplett entity vagy csak id hanem az fáj neki 
a második megoldásban, hogy a

new A()

az nem egy menedzselt entitás hanem "csak" egy pojo. És gondolom, hogy a 
cascade nincs megadva annotációban a persistre sem így ezzel nem tud mit 
kezdeni.
Egyébként meg azt gondolom a kérdésed alapján, hogy még nem sikerült 
elszakadni az adatbázis szintű gondolkodástól és áttérni az objektum 
térbe. Ha meggondolod akkor ez a kapcsoló tábla ugye az objektum térben 
nem is létezik, hanem n-m kapcsolat van az A és a B között. A kapcsoló 
tábla csak a relációs adatbázis kezelőben szükséges egy n-m kapcsolat 
kezeléséhez. Ennek megfelelően a JPA ezt el is rejti előled ha nem 
akarsz vele foglalkozni. Ha más attributum a kapcsoló akkor azt elvileg 
meg tudod adni annotációval és továbbra sem kell, hogy az objektum 
térben legyen számodra direkt elérhető, kezelendő és plusz munkát adó 
entitásod hozzá.
további részletek :  
http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html#JoinColumn
"Use the |@JoinColumn| annotation if: ... you want to join using a 
column in the foreign table other than the primary key column"
üdv
vi


Szomor Attila wrote:
> Sziasztok,
>
> Van egy szabványos kapcsoló tábla két tábla között nem a PK a kapcsoló,  
> hanem unique key mező (más cég PK-ja)
> class A {id, ..., ukA},  class B {id, ..., ukB} és class LinkAB { id, A, B  
> }
> TableLinkAB (id, fkA, fkB)
>
> Ez jól működik:
> ---------------
>   linkAB = new LinkAB();
>   linkAB.setA(findAByUkA(uKeyValueA));
>   linkAB.setB(findBByUkB(uKeyValueB));
>   em.persist(linkAB);
>
> Ez nem működik:
> ---------------
>   linkAB = new LinkAB();
>   linkAB.setA(new A());
>   linkAB.setA().setUkA(uKeyValueA);
>   linkAB.setB(new B());
>   linkAB.setB().setUkB(uKeyValueB);
>   em.persist(linkAB);
>
> Miért kell find-al a komplett objektumot megkeresni, miért nem elég a  
> kapcsoló mezőket kitölteni, ha az adatbázisban úgyis csak három ID van egy  
> PK és két FK ?
> Nagyobb legyen a CPU terhelés, vagy mi ... ért ?
>
> Attila.
> Veled vagyunk JPA !
>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
>   
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20091127/ce80c943/attachment.html 


További információk a(z) Javalist levelezőlistáról