Una clase que se comporta como @Entity y @Embeddable
Tengo una relación unidireccional de @OneToMany entre un equipo y una clase de jugador. Me gustaría guardar un objeto de equipo entre tus jugadores. El identificador del jugador ES COMPUESTO por clave externa del equipo e índice de lista de la siguiente manera. Tengo una asignación como esta porque necesito guardar el Equipo y tus Jugadores comieron al mismo tiempo.
<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>
Así que si uso lo siguiente
<code>Team team = new Team(); team.getPlayerList().add(new Player()); team.getPlayerList().add(new Player()); session.save(team); // It works! </code>
Ocurre si usa @CollectionsOfElements, la clase Player necesita una anotación @Embeddable, no una @Entity. JPA no permite @Entity y @Embeddable al mismo tiempo. El jugador también es una @Entidad - tiene relación con otras entidades.
¿Alguien tiene una idea sobre si podría salvar a un Equipo y un Jugador (ONE WAY RELATIONSHIP) usando CascadeType.PERSIST con @Entity en la clase Player en lugar de @Embeddable?
Recuerde que la clave primaria COMPUESTA debe asignarse antes de guardar, pero el identificador del Equipo y la posición del índice de la Lista de Reproducción podrían desempeñar el papel de la clave principal compuesta del Jugador
Saludos,