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

Verhás István istvan at verhas.com
2009. Nov. 27., P, 16:32:16 CET


Rosszul gondolod.
Pont azért lesz a relációs szinten join table mert nem OneToOne hanem 
ManyToMany. Ennél a relációnál eldöntöd, hogy melyik oldal a tulajdonos 
és ott megadod a JoinTable és JoinColumn annotációkkal, hogy a neked 
rendelkezésre álló relációs tábláiddal ez a ManyToMany kapcsolat milyen 
viszonyban van.
üdv
vi


Szomor Attila wrote:
> Szia,
>
> A három tábla az OEP által havonta küldött PUPHA egy része "MS Access"-ben  
> saját PUPHA-s PK-val kapcsolódnak a szabályrendszerek, amelyek minden  
> hónapban eldobódnak és újra generálódnak. Egyszerűen a három táblát  
> (értelmezés nélkül) be kell tolni az "A" és "B" táblák betolásából nem jön  
> ki a "LinkAB" mert nem OneToOne!
> Vagy rosszúl gondolom?
>
> A:
> --
> @Entity
> @SequenceGenerator(name="terapia_eupont_id_seq",sequenceName="terapia_eupont_id_seq")
> @Table(
>       name="terapia_eupont",
>       uniqueConstraints={
>               @UniqueConstraint(columnNames={"eupid"})
>       }
> )
> public class TerapiaEupont implements Serializable {
> ...
>        @Column(name="eupid", nullable=false, unique=true)
>        private BigInteger eupid;
>
>        @OneToMany(cascade = CascadeType.ALL, mappedBy = "eupontId")
>        private Collection<TerapiaBnohozzar> terapiaBnohozzarCollection;
>
> ...
> }
>
> B:
> --
> @Entity
> @SequenceGenerator(name="terapia_terbno_id_seq",sequenceName="terapia_terbno_id_seq")
> @Table(
>       name="terapia_terbno",
>       uniqueConstraints={
>               @UniqueConstraint(columnNames={"eupbnoid"})
>       }
> )
> public class TerapiaTerbno implements Serializable {
> ...
>        @Column(name="eupbnoid", nullable=false, unique=true)
>        private BigInteger eupbnoid;
>
>        @OneToMany(cascade = CascadeType.ALL, mappedBy = "bnoId")
>        private Collection<TerapiaBnohozzar> terapiaBnohozzarCollection;
>
> ...
> }
>
> LinkAB:
> -------
> @Entity
> @SequenceGenerator(name="terapia_bnohozzar_id_seq",sequenceName="terapia_bnohozzar_id_seq")
> @Table(
>       name="terapia_bnohozzar",
>       uniqueConstraints={
>               @UniqueConstraint(columnNames={"eupont_id","bno_id"})
>       }
>
> )
> public class TerapiaBnohozzar implements Serializable {
> ...
>        @JoinColumn(name = "eupont_id", referencedColumnName = "eupid")
>        @ManyToOne(cascade = CascadeType.ALL, optional = false)
>        private TerapiaEupont eupontId;
>        @JoinColumn(name = "bno_id", referencedColumnName = "eupbnoid")
>        @ManyToOne(cascade = CascadeType.ALL, optional = false)
>        private TerapiaTerbno bnoId;
>
> ...
> }
>
>
> Attila.
>
> 2009.11.27. 15:22:33 dátumon Verhás István <istvan at verhas.com> írta:
>
>   
>> 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
>>     
> _______________________________________________
> 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/cc895f2e/attachment-0001.html 


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