Mehrere @ManyToOne-Felder, die auf dasselbe Objekt in JPA / Hibernate verweisen

8

Ich habe eine Entität Order , die eine billingAddress und eine shippingAddress hat. Ich habe auch eine Address Einheit. Ich versuche, eine einzige Adresstabelle zu erstellen, die sowohl die Versand- als auch die Rechnungsadresse enthält, da es keine Unterscheidung gibt und die Rechnungs- und Lieferadresse in einer oder mehreren Bestellungen identisch sein kann. Ich habe @ManyToOne für die Adressfelder in Order verwendet, aber ich bin mir nicht sicher, wie man das bidirektional macht.

Ich habe zwei Fragen:

  1. Ist @ManyToOne für die Adressfelder geeignet, da es sich wirklich um eine n: 2-Beziehung handelt, die ich einfach mit zwei separaten Feldern repräsentiere? Wenn nicht, was sollte ich stattdessen tun?
  2. Angenommen, 1. ist OK, wie mache ich das Mapping bidirektional (Welche Annotations sollte ich in der Entität Address verwenden?)? Kann dies geschehen, indem mehrere Spalten in einer Annotation in Address ?
  3. aufgelistet werden?

Code:

%Vor%     
scott77777 25.01.2014, 01:01
quelle

1 Antwort

2

In Bezug auf Ihre erste Frage: Ist es ein ManyToOne?

Es kommt darauf an. Wenn mehrere Bestellungen dieselbe Lieferadresse haben können, handelt es sich um ein ManyToOne. Wenn nur eine Bestellung eine Lieferadresse haben kann, handelt es sich um eine OneToOne. Gleich für die Rechnungsadresse.

Ich bin mir nicht sicher, ob die bidirektionale Assoziation eine gute Idee ist. Ich würde es wahrscheinlich in diesem Fall nicht tun. Aber wenn Sie es bidirektional machen wollen, müssen Sie sie bidirektional machen. Sie haben tatsächlich zwei verschiedene Assoziationen hier. Das Mapping würde daher wie folgt aussehen:

%Vor%

oder, wenn die Assoziation tatsächlich eine OneToOne ist (siehe Antwort auf die erste Frage):

%Vor%     
JB Nizet 25.01.2014, 07:58
quelle

Tags und Links