Eine Klasse, die sich wie @Entity und @Embeddable verhält

Ich habe eine einfache @OneToMany-Beziehung zwischen einer Team- und einer Spielerklasse. Ich möchte ein Team-Objekt unter Ihren Spielern speichern. Die Spielerkennung WIRD wie folgt durch den Team-Fremdschlüssel und den Listenindex VERBUNDEN. Ich habe ein Mapping wie dieses, weil ich das Team retten muss und deine Spieler gleichzeitig gegessen haben.

<code>@Entity
public class Team {

    @Id
    @GeneratedValue
    private Integer id;

    @CollectionOfElements
    @JoinTable(
        name="PLAYER",
        joinColumns=@JoinColumn(name="TEAM_ID"))
    @IndexColumn(name="PLAYER_INDEX")
    private List<Player> playerList = new ArrayList<Player>();

}

@Embeddable
public class Player {

   // Player's getter's and setter's

}
</code>

Also, wenn ich das Folgende benutze

<code>Team team = new Team();

team.getPlayerList().add(new Player());
team.getPlayerList().add(new Player());

session.save(team); // It works!
</code>

Es passiert, wenn Sie @CollectionsOfElements verwenden. Die Player-Klasse benötigt eine @Embeddable-Annotation, keine @Entity. JPA erlaubt nicht gleichzeitig @Entity und @Embeddable. Der Spieler ist auch eine @Entität - er hat Beziehung zu anderen Entitäten.

Hat jemand eine Idee, wie ich ein Team und einen Spieler (ONE WAY RELATIONSHIP) retten könnte, indem ich CascadeType.PERSIST mit @Entity in der Player-Klasse anstelle von @Embeddable verwende?

Denken Sie daran, dass der COMPOUND-Primärschlüssel vor dem Speichern zugewiesen werden muss, aber der Bezeichner des Teams und die Position des PlayerList-Index die Rolle des zusammengesetzten Primärschlüssels des Players spielen können

Grüße,

Antworten auf die Frage(2)

Ihre Antwort auf die Frage