@OneToMany ohne Fremdschlüssel

fuzuli001

Mitglied
Hallo Leute,
ich habe ien problem @OneToMany einzusetzen. ich habe folgende Tabellenstruktur.

Kunde
----------
id
.....
-----

Mitarbeiter
----------
id
.....
-----

KontaktInfo (also für telefonnummer oder EMail adresse)
-----------
id
stammdatenart(kunde oder mitarbeiter)
stammdaten_id(id von kunde bzw. mitarbeiter)
.....
-----

Jeder Kunde hat mehrere kontaktinfo und auch kontaktinfo von mitarbeiter befinden sich in gleiche Tabelle. man unterscheidet es durc satmmdatenart.
zwichen Kunde und kontaktInfo befindet keine Fremdschlüssel.
Wie kann ich jetzt diese beziehung mit @OneToMany darstellen. Ist es möglich, ein Bedingung mit OneToMany zu benutzen?

viele Grüße.
 
AFAIK funktioniert OneToMany auch mit ner ganz normalen Spalte, die nicht Fremdschlüssel ist. Es sollte dann aber schon ein Index drauf liegen.

Probiers doch einfach mal aus. 😉
 
Index ist kein Problem. Aber welche Spalte werde ich dann in der Tabelle KontaktInfos nehmen?
Guck mal die Struktur von der Tabelle KontaktInfo.
diese Tabelle nicht nur für Kunde , auch für Mitarbeiter.
Wenn man so einfach @OneToMany schreibt, bekommt man die kontaktInfos von Kunde und Mitarbeiter, die gleicher Id bezitzen.

In der Tabelle KontaktInfos befindet solche Daten;

id stammdatenart stammdatenId kontaktInfo
--- ------------------- ------------------- ---------------
1 KUNDE 10 123/124578
2 KUNDE 11 123/456987
3 MITARBEITER 10 856/789654
4 MITARBEITER 10 asd@asd.com

bei diesem Fall in Kunde obejkt mit dem Id=10, kriegt man ein liste von KontaktInfos mit den Id 1-3-4

Deswegen bracht man irgend einer Weise eine Bedingung zu definieren, dass man auch Stammdatenart mit schreiben kann
 
Achso. Naja, Du kannst Dir ja eine Klasse KontaktInfos mappen und darüber dann die Beziehung zwischen Kunde und Mitarbeiter herstellen. Ansonsten könntest du Dir mal @JoinTable angucken, aber bezweifel dass man das mit so einem Diskriminator (stammdatenart) hinbekommt.
 

Zurück
Oben