Ok eu ja entendo das anotações e relacionamentos do JPA - Hibernate mas vou dar uma lida nessa apostila
segue as classes com seus respectivos relacionamentos
public class Escola implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Column(name = "descricao", nullable = false, length = 80)
private String descricao;
@Basic(optional = false)
@Column(name = "ativo", nullable = false)
private short ativo;
@ManyToMany(mappedBy = "escolaSet", fetch = FetchType.LAZY)
private Set<Telefone> telefoneSet;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idEscola", fetch = FetchType.LAZY)
private Set<EscolaSerie> escolaSerieSet;
EscolaSerie
public class EscolaSerie implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "requerProfSerie")
private Short requerProfSerie;
@JoinColumn(name = "idPeriodo", referencedColumnName = "id", nullable = false)
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private PeriodoSerie idPeriodo;
@JoinColumn(name = "idComplemento", referencedColumnName = "id", nullable = false)
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private ComplementoSerie idComplemento;
@JoinColumn(name = "idEscola", referencedColumnName = "id", nullable = false)
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Escola idEscola;
@JoinColumn(name = "idSerie", referencedColumnName = "id", nullable = false)
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Serie idSerie;
@JoinColumn(name = "idProfessor", referencedColumnName = "id", nullable = false)
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Professor idProfessor;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idEscolaSerie", fetch = FetchType.LAZY)
private Set<Aluno> alunoSet;
Serie
public class Serie implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Column(name = "descricao", nullable = false, length = 80)
private String descricao;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idSerie", fetch = FetchType.LAZY)
private Set<EscolaSerie> escolaSerieSet;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "serie", fetch = FetchType.LAZY)
private Set<Professor> professorSet;
Professor
public class Professor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "nome", length = 80)
private String nome;
@Basic(optional = false)
@Column(name = "ativo", nullable = false)
private boolean ativo;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idProfessor", fetch = FetchType.LAZY)
private Set<EscolaSerie> escolaSerieSet;
@JoinColumn(name = "idSerie", referencedColumnName = "id", nullable = false)
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Serie serie;
A duvida esta o JPA deveria salvar primeiro a tabela pai e depois inserir as filhas, pois em uma view eu crio uma lista de escolasserie e adiciono no objeto escola ainda nao registrado no BD e dou um persist no objeto escola ae o erro esta que o idEscola do objeto EscolaSerie esta null