Uma classe que se comporta como @Entity e @Embeddable
Eu tenho um relacionamento one-way @OneToMany entre uma classe Team e Player. Gostaria de salvar um objeto de equipe entre seus jogadores. O identificador do jogador é composto pela chave estrangeira da equipe e o índice de lista da seguinte maneira. Eu tenho um mapeamento como este porque eu preciso salvar o Time e seus jogadores comerem ao mesmo tempo.
<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>
Então, se eu usar o seguinte
<code>Team team = new Team(); team.getPlayerList().add(new Player()); team.getPlayerList().add(new Player()); session.save(team); // It works! </code>
Acontece se você usa @CollectionsOfElements, a classe Player precisa de uma anotação @Embeddable, não uma @Entity. O JPA não permite @Entity e @Embeddable ao mesmo tempo. Player também é um @Entity - tem relacionamento com outras entidades.
Alguém tem uma idéia sobre como eu poderia salvar uma equipe e um jogador (ONE WAY RELATIONSHIP) usando CascadeType.PERSIST com @Entity na classe Player em vez de @Embeddable?
Lembre-se que a chave primária COMPOSTO precisa ser atribuída antes de salvar, mas o identificador da equipe e a posição do índice PlayerList podem desempenhar o papel da chave primária composta do Player.
Saudações,