2016-05-03 7 views
0

Ich habe 2 Tabellen zu verwenden: Währung und bewertenWie mappedBy mit mehr als einem Wert JPA

Der Primärschlüssel der Währung durch die inputCurrency und outputCurrency foreigh Schlüssel in der Rate verwiesen wird.

Wie kann ich diese zuordnen, um cascadeALL? Es ergibt sich ein Primärschlüssel violation.I kann eine Währungs

habe ich versucht, in Rate (die Tabelle, die die foreigh Schlüssel enthält)

@ManyToOne(cascade = CascadeType.ALL) 
@JoinColumn(name = "INPUT_CURRENCY") 
private Currency inputCurrency; 

@ManyToOne(cascade = CascadeType.ALL) 
@JoinColumn(name = "OUTPUT_CURRENCY") 
private Currency ouputCurrency; 

Aber wenn ich einen Artikel aus der Währungs löschen nicht entfernen becouse es referenziert wird von inputCurrency oder outputCurrency in Rate.

Wenn ich die Liste der Kurse in Währung annotieren möchte, wie kann ich sagen, mappedBy = "inputCurrency" und "outputCurrency"?

@OneToMany(cascade = CascadeType.ALL,mappedBy ="inputCurrency,outputCurrency") 
List<Rate> rates; 
+0

klar kann man nicht mappedBy mit mehreren Werten verwenden, weil es keinen Sinn macht. "mappedBy" = "wo ist diese bidirektionale Beziehung gespeichert?" ... und sie kann nicht an mehreren Stellen gespeichert werden! –

Antwort

1

Die Lösung wird unter Verwendung von zwei Liste der Tarife in Währung: ein für den fk inputCurrency und eine andere für die fk outputCurrency

@OneToMany(cascade = CascadeType.ALL,mappedBy ="inputCurrency") 
List<Rate> ratesIC; 

@OneToMany(cascade = CascadeType.ALL,mappedBy ="outputCurrency") 
List<Rate> ratesOC; 
0

Sie können mit zwei Kollektionen begleichen:

List<Rate> inputRate;

List<Rate> outputRate;

Jeder mit einem entsprechenden mappedBy

und ein drittes @Transient List<Rate> rates;

Y Sie können ein @PostLoad Ereignis verwenden, um die zwei persistenten Listen in die transiente Liste zu vereinen.

Und in gleicher Weise, wenn Elemente zu einer der persistenten Listen hinzufügen/entfernen, stellen Sie sicher, Hinzufügen/Entfernen von der gemeinsamen Liste.

+0

Vielen Dank für die Suggestion. –

Verwandte Themen