Instituição
@Entity
@Table(name = "instituicao")
public class Instituicao {
@Id
private String identificador;
@Column(name = "nome")
private String nome;
@OneToMany(mappedBy = "instituicao", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Turma> turmas;
@OneToOne
@JoinColumn(name = "idUsuario")
@Cascade(CascadeType.SAVE_UPDATE)
private Coordenador coordenador;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="Instituicao_professor",joinColumns={@JoinColumn(name="identificador") }
,inverseJoinColumns={@JoinColumn(name = "cpfMatricula")})
@Cascade(CascadeType.ALL)
private Collection<Professor> professores;
private boolean status;
@OneToMany(mappedBy = "instituicao", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Aluno> alunos;
@OneToMany(mappedBy="instituicao")
@Cascade(CascadeType.ALL)
private Collection<Disciplina>disciplinas;
private String telefone;
private String email;
private String estado;
private String cidade;
private String bairro;
private String rua;
private String cep;
private String numero;
private String complemento;
private String dominio;
public Instituicao(String identificador, String nome,
Collection<Turma> turmas, Collection<Professor> professores,boolean status,
Collection<Aluno> alunos, Coordenador coordenador, Collection<Disciplina> disciplinas ,String telefone,
String email, String estado, String cidade, String bairro,
String rua, String cep, String numero, String complemento,
String dominio) {
this.identificador = identificador;
this.nome = nome;
this.turmas = turmas;
this.coordenador = coordenador;
this.professores = professores;
this.status=status;
this.alunos = alunos;
this.disciplinas=disciplinas;
this.telefone = telefone;
this.email = email;
this.estado = estado;
this.cidade = cidade;
this.bairro = bairro;
this.rua = rua;
this.cep = cep;
this.numero = numero;
this.complemento = complemento;
this.dominio = dominio;
}
Professor
@Entity
@Table(name = "professor")
public class Professor extends Usuario {
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "Instituicao_professor", joinColumns = { @JoinColumn(name = "cpfMatricula") }, inverseJoinColumns = { @JoinColumn(name= "identificador") })
private Collection<Instituicao> instituicoes;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "disciplina_professor", joinColumns = { @JoinColumn(name = "cpfMatricula") }, inverseJoinColumns = { @JoinColumn (name= "idDisciplina") })
// @Cascade(CascadeType.ALL)
private Collection<Disciplina> disciplinas;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "turma_professor", joinColumns = { @JoinColumn(name = "cpfMatricula") }, inverseJoinColumns = { @JoinColumn(name="idTurma") })
private Collection<Turma> turmas;
@OneToMany(mappedBy = "professor", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Questao> questoes;
public Professor(String nome, String cpfMatricula, String senha,
String privilegio,boolean status, String email,
Collection<Instituicao> instituicoes,
Collection<Disciplina> disciplinas, Collection<Turma> turmas,
Collection<Questao> questoes, String telefone, String celular) {
super(nome, cpfMatricula, senha, telefone, celular, email,status ,privilegio);
this.instituicoes = instituicoes;
this.disciplinas = disciplinas;
this.turmas = turmas;
this.questoes = questoes;
}