JPA - shared primary key

jackochan

Mitglied
Ich entwickele eine Spring-Boot-Anwendung mit JPA und Eclipselink.
Ich habe zwei Entitiy-Klassen --> "Player" und "PlayerSettings"

Die Entity-Klasse Player hat folgende Atrributen

Player.class
Java:
@Id
@Column(name="player_id")
private Integer id;

@Column(name="full_name")
private String name;

@Column(name="Age")
private String age;

Nun will ich die Entity-Klasse PlayerSettings so ähnlich aufbauen

PlayerSettings.class
Java:
@Id
@Column(name="player_id") // Das sollte PK und FK zu "player_id" sein
private Player player;

@Column(name="player_settings")
private List<String> settings;

Das Problem mit der PlayerSettings-Klasse ist, dass "Id" in diesem Fall nicht "serializable" ist und daher dies zu Fehler führt.
Kennt ihr hierfür vllt. gute Lösungen ?
Also ich will von der PlayerSettingsService-Klasse aus durch Setzen der Attributenwerte player und settings das PlayerSettings-Entity einfach persistieren (also ohne die player_id explizit geholt wird und gesetzt wird.

Vielen Dank !
 

Thallius

Top Contributor
Das ist halt der Nachteil von diesem ganzen OOP Aufsätzen für am Ende doch nur relationale Datenbanken. Man wird unflexibel und muss unnötige Implementationen benutzen wenn man sich nicht furchtbar verrenken will...
 

stg

Top Contributor
(also ohne die player_id explizit geholt wird und gesetzt wird.

Die kennst du doch ... die steht in "Player" doch drin.

Insgesamt könnte das grob skizziert etwa so ausschauen:

Java:
class Player {
    @Id
    @Column(name="player_id")
    private Integer id;
}

class PlayerSettings {
   @Id
   @Column(name = "player_id")
   private Integer id;

   @OneToOne
   @PrimaryKeyJoinColumn(name="player_id", referencedColumnName="player_id")
   private Player player;

   public PlayerSettings(Player player) {
       this.id = player.getId();
       this.player = player;
   }
}
 

Ähnliche Java Themen

Neue Themen


Oben