[quote=fdiaz2011]Olha, está meio confuso isso ai.
Não precisa disso tudo.
Como estão suas entidades Usuario, Turma e Professor ?[/quote]
Esse modelo ER que está tudo criado, mas vou mostrar 3 entidades veja em baixo.
Entidade Usuario
[code]
@Entity
@Table(name = “usuario”)
@XmlRootElement
@NamedQueries({
@NamedQuery(name = “Usuario.findAll”, query = “SELECT u FROM Usuario u”),
@NamedQuery(name = “Usuario.findByIdUsuario”, query = “SELECT u FROM Usuario u WHERE u.idUsuario = :idUsuario”),
@NamedQuery(name = “Usuario.findByUsuario”, query = “SELECT u FROM Usuario u WHERE u.usuario = :usuario”),
@NamedQuery(name = “Usuario.findBySenha”, query = “SELECT u FROM Usuario u WHERE u.senha = :senha”),
@NamedQuery(name = “Usuario.findByNome”, query = “SELECT u FROM Usuario u WHERE u.nome = :nome”),
@NamedQuery(name = “Usuario.findByEmail”, query = “SELECT u FROM Usuario u WHERE u.email = :email”),
@NamedQuery(name = “Usuario.findLogarUsuario”, query = “SELECT u FROM Usuario u WHERE u.usuario = :usuario and u.senha = :senha”),
@NamedQuery(name = “Usuario.verificaExiteUsuario”, query = “SELECT count(u) FROM Usuario u WHERE u.usuario = :usuario and u.senha = :senha”)})
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idUsuario")
private Integer idUsuario;
@Size(max = 45)
@Column(name = "usuario")
private String usuario;
@Size(max = 15)
@Column(name = "senha")
private String senha;
@Size(max = 45)
@Column(name = "nome")
private String nome;
// @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="E-mail inválido")//if the field contains email address consider using this annotation to enforce field validation
@Size(max = 30)
@Column(name = "email")
private String email;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario")
private Collection<Aluno> alunoCollection;
@JoinColumn(name = "permissao", referencedColumnName = "idPermissao")
@ManyToOne(optional = false)
private Permissao permissao;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario")
private Collection<Professor> professorCollection;
public Usuario() {
}
public Usuario(Integer idUsuario) {
this.idUsuario = idUsuario;
}
public Integer getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(Integer idUsuario) {
this.idUsuario = idUsuario;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@XmlTransient
public Collection<Aluno> getAlunoCollection() {
return alunoCollection;
}
public void setAlunoCollection(Collection<Aluno> alunoCollection) {
this.alunoCollection = alunoCollection;
}
public Permissao getPermissao() {
return permissao;
}
public void setPermissao(Permissao permissao) {
this.permissao = permissao;
}
@XmlTransient
public Collection<Professor> getProfessorCollection() {
return professorCollection;
}
public void setProfessorCollection(Collection<Professor> professorCollection) {
this.professorCollection = professorCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idUsuario != null ? idUsuario.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Usuario)) {
return false;
}
Usuario other = (Usuario) object;
if ((this.idUsuario == null && other.idUsuario != null) || (this.idUsuario != null && !this.idUsuario.equals(other.idUsuario))) {
return false;
}
return true;
}
@Override
public String toString() {
return "Entidades.Usuario[ idUsuario=" + idUsuario + " ]";
}
}[/code]
Entidade Professor
@Entity
@Table(name = "professor")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Professor.findAll", query = "SELECT p FROM Professor p"),
@NamedQuery(name = "Professor.findByMatriculaProfessor", query = "SELECT p FROM Professor p WHERE p.matriculaProfessor = :matriculaProfessor"),
@NamedQuery(name = "Professor.findByRamal", query = "SELECT p FROM Professor p WHERE p.ramal = :ramal"),
@NamedQuery(name = "Professor.findByEspecialista", query = "SELECT p FROM Professor p WHERE p.especialista = :especialista")})
public class Professor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "matriculaProfessor")
private Integer matriculaProfessor;
@Column(name = "ramal")
private Integer ramal;
@Size(max = 20)
@Column(name = "especialista")
private String especialista;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "professor")
private Collection<Turma> turmaCollection;
@JoinColumn(name = "usuario", referencedColumnName = "idUsuario")
@ManyToOne(optional = false)
private Usuario usuario;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "autor")
private Collection<Feed> feedCollection;
public Professor() {
}
public Professor(Integer matriculaProfessor) {
this.matriculaProfessor = matriculaProfessor;
}
public Integer getMatriculaProfessor() {
return matriculaProfessor;
}
public void setMatriculaProfessor(Integer matriculaProfessor) {
this.matriculaProfessor = matriculaProfessor;
}
public Integer getRamal() {
return ramal;
}
public void setRamal(Integer ramal) {
this.ramal = ramal;
}
public String getEspecialista() {
return especialista;
}
public void setEspecialista(String especialista) {
this.especialista = especialista;
}
@XmlTransient
public Collection<Turma> getTurmaCollection() {
return turmaCollection;
}
public void setTurmaCollection(Collection<Turma> turmaCollection) {
this.turmaCollection = turmaCollection;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
@XmlTransient
public Collection<Feed> getFeedCollection() {
return feedCollection;
}
public void setFeedCollection(Collection<Feed> feedCollection) {
this.feedCollection = feedCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (matriculaProfessor != null ? matriculaProfessor.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Professor)) {
return false;
}
Professor other = (Professor) object;
if ((this.matriculaProfessor == null && other.matriculaProfessor != null) || (this.matriculaProfessor != null && !this.matriculaProfessor.equals(other.matriculaProfessor))) {
return false;
}
return true;
}
@Override
public String toString() {
return "Entidades.Professor[ matriculaProfessor=" + matriculaProfessor + " ]";
}
}
Entidade Turma
@Entity
@Table(name = "turma")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Turma.findAll", query = "SELECT t FROM Turma t"),
@NamedQuery(name = "Turma.findByCodTurma", query = "SELECT t FROM Turma t WHERE t.codTurma = :codTurma"),
@NamedQuery(name = "Turma.findByHorario", query = "SELECT t FROM Turma t WHERE t.horario = :horario"),
@NamedQuery(name = "Turma.findByEstado", query = "SELECT t FROM Turma t WHERE t.estado = :estado")})
public class Turma implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "codTurma")
private Integer codTurma;
@Column(name = "horario")
@Temporal(TemporalType.TIMESTAMP)
private Date horario;
@Column(name = "estado")
private Integer estado;
@JoinColumn(name = "professor", referencedColumnName = "matriculaProfessor")
@ManyToOne(optional = false)
private Professor professor;
@JoinColumn(name = "disciplina", referencedColumnName = "codDisciplina")
@ManyToOne(optional = false)
private Disciplina disciplina;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "turma1")
private Collection<Notas> notasCollection;
public Turma() {
}
public Turma(Integer codTurma) {
this.codTurma = codTurma;
}
public Integer getCodTurma() {
return codTurma;
}
public void setCodTurma(Integer codTurma) {
this.codTurma = codTurma;
}
public Date getHorario() {
return horario;
}
public void setHorario(Date horario) {
this.horario = horario;
}
public Integer getEstado() {
return estado;
}
public void setEstado(Integer estado) {
this.estado = estado;
}
public Professor getProfessor() {
return professor;
}
public void setProfessor(Professor professor) {
this.professor = professor;
}
public Disciplina getDisciplina() {
return disciplina;
}
public void setDisciplina(Disciplina disciplina) {
this.disciplina = disciplina;
}
@XmlTransient
public Collection<Notas> getNotasCollection() {
return notasCollection;
}
public void setNotasCollection(Collection<Notas> notasCollection) {
this.notasCollection = notasCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (codTurma != null ? codTurma.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Turma)) {
return false;
}
Turma other = (Turma) object;
if ((this.codTurma == null && other.codTurma != null) || (this.codTurma != null && !this.codTurma.equals(other.codTurma))) {
return false;
}
return true;
}
@Override
public String toString() {
return "Entidades.Turma[ codTurma=" + codTurma + " ]";
}
}
Espero que me dá dicas ou melhorar escrever na criteria. Obrigado!