JPA Automatisch generierte IDs für Einträge in JoinTable

Fant

Bekanntes Mitglied
Hallo zusammen

Ich hab ein normales unidirektionales n:m-Mapping über eine JoinTable.

Java:
public class BusinessUnit implements Serializable {
  ...
  @ManyToMany(cascade=CascadeType.ALL)
  @JoinTable(name="REP_BU_GROUP",
      joinColumns{@JoinColumn(name="BU_ID", referencedColumnName="BU_ID")},
      inverseJoinColumns={@JoinColumn(name="OEM_ID", referencedColumnName="OEM_ID")}
  private List<Oem> oemList;
  ...
}

Durch die Kaskadierung erreiche ich, dass bei Änderung eines BusinessUnit-Datensatzes automatisch auch die entsprechenden Einträge in der JoinTable bearbeitet werden. Das klappt soweit auch alles wunderbar, nur bekomme ich die Verwaltung der IDs der Einträge in der JoinTable nicht hin. Ich hätte gerne, dass diese automatisch erzeugt und vergeben werden, wie bei der @GeneratedValue-Annotation bei der ID eines "normalen Datesatzes".
Momentan überlasse ich an diese Stelle die Vergabe der IDs der Datenbank selbst, aber das ist für mich eigentlich nur als Notlösung hinnehmbar.
Also nochmal ganz knapp die Kernfrage: Wie erreiche ich hier eine automatische Vergabe und Verwaltung der IDs für Einträge in der JoinTable?

Viele Grüße
Fant
 

JimPanse

Bekanntes Mitglied
Kernfrage: Wie erreiche ich hier eine automatische Vergabe und Verwaltung der IDs für Einträge in der JoinTable?

Kurz und Knapp: Gar nicht! Die Id's (auch FK falls das RDBMS diese untersützt) in der JoinTable sind immer die PK's der Entitäten die über die JoinTable in Relation zu einander gesetzt werden.

(Vielleicht verstehe ich auch die Frage falsch).
 
N

nillehammer

Gast
In Ergänzung zu JimPanse's Antwort. In Join-Tables gibt es keinen extra Primary Key. Der "Primary Key" ist zusammengesetzt aus den beiden Fremdschlüsseln. Das hat nichts mit JPA zu tun, sondern wird in Datenbank(Join-)Tabellen halt so gemacht.
 
Zuletzt bearbeitet von einem Moderator:

Fant

Bekanntes Mitglied
Ok, dann ist mein Datenbankschema wohl falsch. Da hab ich bisher wirklich den angesprochenen extra-PK und zwei Spalten mit den jeweiligen Fremdschlüsseln.
Danke euch beiden.
 

Ähnliche Java Themen


Oben