JPA Mapping über Hilfstabelle

Hallo,
ich verwende für ein Projekt Netbeans 6.7 und JPA (freeware von toplink)
Ich habe hier schon gesucht, auch der eine und andere Beitrag gefunden, hat mir aber nicht geholfen.

Ich komme mit dem Mapping nicht ganz klar.
Die tbestellung ist eine Art Hilfstabelle.

ich habe 3 Tabellen.


tkunde:
kkunde = 3
kkunde ist der pk

tbestellung:
kbestellung = 13
tkunde_kkunde = 3
kbestellung is der pk

tbestellung:
kbestellpos = 
tbestellung_kbestellung = 13
kbestellpos ist der pk

Tkunde.java
@OneToMany(mappedBy="tKundekKunde",targetEntity=Tbestellung.class)
private Collection<Tbestellung> bestellungen;

// @OneToMany?
// private Collection<Tbestellpos> bestellpos;

TBestellung.java
@JoinColumn(name = "tKunde_kKunde")
@ManyToOne(targetEntity=Tkunde.class)
private Tkunde tKundekKunde;

Ich arbeite in der Tkunde.java damit ich mit dem Designer von Netbeans arbeiten kann.
Wie mappe ich die Tabelle TBestellpos, damit ich über Tkunde zugreifen kann?
Was muss in der Class TBestellpos bzw. TKunde stehen?

Im voraus vielen Dank.

Gruß
Mike

deine Tabellenangabe hat glaube nen Fehler du hast 2x tbestellung

Aber ich erkenn dein Tabellenmuster auch nicht so richtig.

Hallo,

im oberen Posting ist ein Darstellungsfehler.
Tbestellung und Tkunde sind 2 getrennte Klassen.

@JoinTable(name = " ", joinColumns = {@JoinColumn(name = " ")},
inverseJoinColumns= {@JoinColumn(name = " ")})

So wie ich das herausgefunden habe, benötige ich den Befehl, aber welche Werte soll ich eintragen?

Datenbankschema:
tkunde:
kkunde = 3
kkunde ist der pk

tbestellung:
kbestellung = 13
tkunde_kkunde = 3
kbestellung is der pk

tbestellpos:
kbestellpos =
tbestellung_kbestellung = 13
kbestellpos ist der pk

Ich möchte tbestellpos auf die tkunde mappen.
Danke schonmal.

Gruß
Mike

ja ich hab die Tags gemacht.

Als Name musst du den Namen der Tabelle eintragen, joinColumn ist die Spalte auf die du gehst wenn du dich mit der Tabelle verbindest dh bei kunde ist es tkunde_kkunde und reverse ist kbestellung.

Sorry, verstehe ich nicht ganz.
Muss vielleicht dazu sagen, das ich mich gerade einarbeite in das JPA-Thema.

Was muss ich in der Class Tkunde eintragen?

Danke schonmal für die Gedult…

Gruß
Mike

beim Kunden müsste das hier richtig sein
@JoinTable(name = " tbestellung", joinColumns = {@JoinColumn(name = " kunde_kkunde")},inverseJoinColumns= {@JoinColumn(name = “kbestellung”)})

Hallo,

die Antworten kommen ja fix :slight_smile:

Nur das wir uns richtig verstehen.
Ich möchte herausbekommen, wie hoch der Auftragsvolumen ein Kunde hat.

1 Kunde hat mehrere Aufträge,
1 Auftrag hat mehrere Positionen.

In der Tkunde stehen die Kunden drin, mit dem Verweis auf die Aufträge (Tbestellung).
Innerhalb der Aufträge gibt es eine Verknüpfung auf die Bestellpositionen (TBestellpos)

Dann ist der Befehl richtig? Weil im Befehl sehe ich nur Tbestellung gemappt wird!?

Gruß
Mike

naja ich hab das jetzt so geschrieben wie ich es aus deinen Sachen erkannt hab, aber :wink:
ich würd es anders machen
Mach ein Objekt Kunde, Bestellung und Bestellungsposition
Der Kunde hat eine Liste von Bestellungen und die Bestellung eine Liste von Positionen.
Das lässt sich gut und einfach abbilden, außerdem kannst du die Bestellung einfach erweitern.

Ich bin immer wieder für einfache Lösungsvorschläge zu haben.

ich habe schonmal das versucht, bin aber auch nicht weitergekommen.

In der Klasse, bzw Entität Tkunde
@OneToMany(mappedBy=“tKundekKunde”,targetEntity=Tbestellung.class)
private Collection bestellungen;

In der Entität Tbestellung
@JoinColumn(name = “tKunde_kKunde”)
@ManyToOne(targetEntity=Tkunde.class)
private Tkunde tKundekKunde;

@OneToMany(mappedBy=“tBestellungkBestellung”,targetEntity=Tbestellpos.class)
private Collection bestellpos;

In der Entität Tbestellpos
@JoinColumn(name = “tBestellung_kBestellung”)
@ManyToOne(targetEntity=Tbestellung.class)
private TBestellung tBestellungkBestellung;

Wie greife ich dann von der Klasse Tkunde auf die Tbestellpos zu? Oder habe ich dich falsch verstanden?
Ich hoffe sind nicht so viele Fehler drin…

Gruß
Mike

denk einfach nicht daran dass da Toplink was macht, arbeite ganz normal damit.

Jetzt steh ich auf dem Schlauch…
Auf das Datenbankdesign habe ich keinen Einfluss, da die DB aus einem Warenwirtschaftssystem stammt.

Wie würdest du das realisieren?

Das hat nichts mit dem Datenbankdesign zu tun.
Du sagst einfach kunde.getBestellungen().getPositionen()

Könntest du es bitte etwas weiter ausholen?
Wo kommt das rein? Was mach ich damit?

na du willst doch auf die Objekte zugreifen, das kannst du ganz normal machen oder was hast du jetzt vor?

Ich will mir ein Programm bauen, welches mit z.B die Summe der Aufträge pro Kunde mir zurückgibt.

Soviel wie ich weiss, muss ich ja zuerst die Mappings über die Tabellen vornehmen, damit ich eine Collection erstellen kann.
Danach bau ich dann die Funktionen.

Ich bin im moment etwas verwirrt. Dann benötige ich die Mappings nicht!?

Du hast das Mapping gerade schon gemacht.

Muss ich mal testen. Erstmal danke für die Hilfe und die Gedult :slight_smile:
Gute Nacht…

Ich habs mal eine Nacht darüber geschlafen. Funktioniert! Danke.