[Java lista] JPA 1.0 Kapcsoló tábla External Id-k
Szomor Attila
aszomor at computertechnika.hu
2009. Nov. 27., P, 15:59:35 CET
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
További információk a(z) Javalist levelezőlistáról