Olá pessoal, minha dúvida é a seguinte. Tenha três entidades - ALUNO, GRAUS, ALUNO_GRAUS, onde a entidade ALUNO_GRAUS é uma associação entre ALUNO e GRAUS. Coloquei uma classe de chave composta @EmbeddedId, com três compos, para a classe ALUNO_GRAUS. Eis a dúvida como se persiste esta situação. Posso persistir um aluno com vários alunos_agrau ou tenho que persistir primeiro o aluno e depois a List<aluno_grau>?
@Entity
@Table(name = "ALUNOS")
public class aluno {
@OneToMany(mappedBy = "aluno")
private List<aluno_grau> aluno_graus;
@Entity
@Table(name = "aluno_graus")
public class aluno_grau {
@EmbeddedId
protected AlunoGrausPK alunoGrausPK;
@JoinColumn(name = "ID_ALUNO", referencedColumnName = "ID", nullable = false, insertable = false, updatable = false)
@ManyToOne(optional = false)
private aluno aluno;
@JoinColumn(name = "ID_GRAU", referencedColumnName = "ID", nullable = false, insertable = false, updatable = false)
@ManyToOne(optional = false)
private grau grau;
@Embeddable
public class AlunoGrausPK {
@Basic(optional = false)
@Column(name = "ID_ALUNO", nullable = false)
private int id_aluno;
@Basic(optional = false)
@Column(name = "ID_GRAU", nullable = false)
private int id_grau;
@Basic(optional = false)
@Column(name = "DATA", nullable = false)
@Temporal(TemporalType.DATE)
private Date data;
@Entity
@Table(name = "GRAUS")
public class grau {
@Id
@Column(name = "ID")
private int id = 0;
@Column(name = "COR_FAIXA")
private String cor_faixa = "";
@Column(name = "CODIGO")
private int codigo = 0;
@Column(name = "TIPO")
private String tipo = "";
//@ManyToMany(fetch = FetchType.EAGER)
//@JoinTable(name = "ALUNO_GRAUS", joinColumns = @JoinColumn(name = "ID_GRAU"), inverseJoinColumns = @JoinColumn(name = "ID_ALUNO"))
//private List<aluno> alunos = new ArrayList<aluno>();
@OneToMany(mappedBy = "grau")
private List<aluno_grau> aluno_graus;
Como visto um aluno possui varios aluno_grau. Como persistir isto, não estou comseguindo persistir da maneira normal.
