[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