JPA - shared primary key

Diskutiere JPA - shared primary key im Data Tier Forum; Ich entwickele eine Spring-Boot-Anwendung mit JPA und Eclipselink. Ich habe zwei Entitiy-Klassen --> "Player" und "PlayerSettings" Die...

  1. jackochan
    jackochan Neues 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
    Code (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
    Code (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 !
     
  2. Vielleicht hilft dir dieses Training hier weiter.
  3. Thallius
    Thallius Bekanntes Mitglied
    Und warum gibst du der Settings klasse nicht auch eine SettingsId als primary key?
     
    jackochan gefällt das.
  4. jackochan
    jackochan Neues Mitglied
    Das war die ursprüngliche Lösung. Nun finde ich auch, dass dies die bessere Lösung ist und keine Nachteile hat.
    Die andere Lösung macht tatsächlich nur komplizierter.
    Vielen Dank Thallius !
     
  5. Thallius
    Thallius Bekanntes Mitglied
    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...
     
  6. stg
    stg Bekanntes Mitglied
    Die kennst du doch ... die steht in "Player" doch drin.

    Insgesamt könnte das grob skizziert etwa so ausschauen:

    Code (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;
       }
    }
     
     
  7. Wenn du Java lernen möchtest, empfehlen wir dir diese Online-Training hier
Die Seite wird geladen...

JPA - shared primary key - Ähnliche Themen

SharedPreferences Problem
SharedPreferences Problem im Forum Java Basics - Anfänger-Themen
SharedPreferences funktionieren nicht...
SharedPreferences funktionieren nicht... im Forum Mobile Geräte
Java Shared Memory?
Java Shared Memory? im Forum Allgemeine Java-Themen
Java Native/Shared Library (.so) laden macht Probleme
Java Native/Shared Library (.so) laden macht Probleme im Forum Allgemeine Java-Themen
Konzeptanfrage - Intent - SharedPreferences
Konzeptanfrage - Intent - SharedPreferences im Forum Allgemeine Java-Themen
Thema: JPA - shared primary key