Opa!vlw mais uma vez…
Eu coloquei isso como exemplo, vou te mostrar o que eu to tentando fazer:
Eu tenho as entidades turma, sala e aloca(classe associativa), e eu quero mostrar no datatable todas as turmas que estao alocadas na sala num determinado dia de semana:
Se vc tiver uma ideia mais simples, por favor me de uma luz.
Vlw!
Os codigos seguem abaixo:
@Entity
public class Turma implements Serializable{
@Id
@Column(name="codturma")
private String codTurma;
@Column(name="turno")
private String turno;
@Column(name="nometurma")
private String nomeTurma;
@Column(name="codserie")
private String codSerie;
@Column(name="periodo")
private String periodo;
@Column(name="codcurso")
private String codCurso;
@Column(name="codespecializacao")
private String codEspecializacao;
@Column(name="seq")
private String seq;
//gets e setts omitidos
}
@Entity
@Table(name="aloca_turma_sala")
public class Aloca implements Serializable{
@EmbeddedId
private AlocaPK id;
@ManyToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumn(name="codcampus",insertable=false,updatable=false)
private Campus campus;
@ManyToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumns(value={
@JoinColumn(name="codcampus",insertable=false,updatable=false),
@JoinColumn(name="codbloco",insertable=false,updatable=false)
})
private Bloco bloco;
@ManyToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumn(name="codpavimento",insertable=false,updatable=false)
private Pavimento pavimento;
@ManyToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumns(value={
@JoinColumn(name="codcampus",insertable=false,updatable=false),
@JoinColumn(name="codbloco",insertable=false,updatable=false),
@JoinColumn(name="codpavimento",insertable=false,updatable=false),
@JoinColumn(name="codsala",insertable=false,updatable=false),
@JoinColumn(name="codtiposala",insertable=false,updatable=false)
})
private Sala sala;
@ManyToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumn(name="codturma",insertable=false,updatable=false)
private Turma turma;
@Column(name="horainicio",insertable=false,updatable=false)
private String horaInicio;
@Column(name="horafim",insertable=false,updatable=false)
private String horaFim;
@Column(name="diasemana",insertable=false,updatable=false)
private String diaSemana;
//gets e sets omitidos
o bean bAloca, metodo da consulta:
public String confirmaAlocaForm(){
String retorno = "sucesso";
//buscar as turmas alocadas na sala
Session session = null;
try{
session = HibernateUtil.getSession();
SalaPK id = new SalaPK();
id.setCodSala(codsala);
id.setCodBloco(codbloco);
id.setCodCampus(codcampus);
id.setCodPavimento(codpavimento);
id.setCodTipoSala(codtiposala);
Sala sala = new Sala();
sala.setId(id);
listaTurmasSala = new AlocaDao(session).mostraTurmasAlocadas(sala,diasemana);
Hibernate.initialize(listaTurmasSala);
System.out.println("total de turmas: "+listaTurmasSala.size());
}catch (Exception e) {
System.out.println("falha ao buscar as turmas alocadas na sala");
e.printStackTrace();
}
finally{
session.close();
}
return retorno;
}
O dao:
public List mostraTurmasAlocadas(Sala sala,String diasemana){
return this.session.createSQLQuery("select t.nometurma,t.periodo,t.turno,a.horainicio,a.horafim from aloca_turma_sala a ,turma t where t.codturma = a.codturma and a.codcampus = :codcampus and a.codbloco = :codbloco and a.codpavimento = :codpavimento and a.codsala = :codsala and a.diasemana = :diasemana")
.addScalar("nomeTurma", Hibernate.STRING)//coloquei pois dava erro de for input string neste campo
.setParameter("codcampus", sala.getId().getCodCampus())
.setParameter("codbloco", sala.getId().getCodBloco())
.setParameter("codpavimento", sala.getId().getCodPavimento())
.setParameter("codsala", sala.getId().getCodSala())
.setParameter("diasemana", diasemana)
.list();
}
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@taglib
uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib
uri="http://richfaces.org/a4j" prefix="a4j"%><%@taglib
uri="http://richfaces.org/rich" prefix="rich"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Confirmação da alocação</title>
</head>
<body>
<f:view>
<h:form>
<h4>Dados da sala</h4><br>
<a4j:keepAlive beanName="bAloca"/>
<b><h:outputText value="Descrição: "/></b><h:outputText value="#{bAloca.dadosSala.dscSala}"/>
<b><h:outputText value="Capacidade: "/></b><h:outputText value="#{bAloca.dadosSala.capacidade}"/><br>
<b><h:outputText value="Ar condicionado: "/></b><h:outputText value="#{bAloca.dadosSala.arCondicionado}"/>
<b><h:outputText value="Ventilador: "/></b><h:outputText value="#{bAloca.dadosSala.ventilador}"/><br>
<b><h:outputText value="Tipo de quadro: "/></b><h:outputText value="#{bAloca.dadosSala.tipoQuadro}"/><br>
<h4>Turmas alocadas nesta sala</h4><br>
<h:dataTable border="1" id="turmasalocadas" value="#{bAloca.listaTurmasSala}" var="turmas">
<h:column id="nomedaturma">
<f:facet name="header">
<h:outputText value="nome da turma"></h:outputText>
</f:facet>
<h:outputText value="#{turmas.nometurma}"></h:outputText>
</h:column>
</h:dataTable>
</h:form>
</f:view>
</body>
</html>