Klasa, która zachowuje się jak @Entity i @Embeddable

Mam jednokierunkową relację @OneToMany między drużyną a klasą Gracza. Chciałbym zapisać obiekt Team wśród twoich Graczy. Identyfikator gracza JEST ZWIĄZKIEM według klucza obcego zespołu i indeksu listy w następujący sposób. Mam takie mapowanie, ponieważ muszę zapisać drużynę, a twoi gracze jedli w tym samym czasie.

<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>

Więc jeśli skorzystam z poniższych

<code>Team team = new Team();

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

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

Zdarza się, czy używasz @CollectionsOfElements, klasa Player potrzebuje adnotacji @Embeddable, a nie @Entity. JPA nie zezwala jednocześnie na @Entity i @Embeddable. Gracz jest także @Entity - ma relacje z innymi podmiotami.

Czy ktoś wpadł na pomysł, że mógłbym uratować zespół i gracza (JEDEN RELACJE W DRODZE), używając CascadeType.PERSIST z @Entity w klasie Player zamiast @Embeddable?

Pamiętaj, że klucz podstawowy COMPOUND musi zostać przypisany przed zapisaniem, ale identyfikator zespołu i pozycja indeksu PlayerList mogą odgrywać rolę złożonego klucza podstawowego gracza

pozdrowienia,

questionAnswers(2)

yourAnswerToTheQuestion