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,