[RESOLVIDO] Mudando o resultado de busca quando muda um select

1 resposta
W

bom vamos lá

minha entidade
public class Matricula {

    @Id
    @GeneratedValue
    private Long id;
    @ManyToOne
    private Turma turma;
    @ManyToOne
    private Aluno aluno;
    private String proficiencia;}
metodo que to usando no dao pra tentar mostrar apenas os alunos matriculado em uma determinada turma
public List<Matricula> Filtro(Long id){
             Session s = HibernateUtil.getSession();
        try {
            Query q = s.createQuery("from Matricula a where a.turma_id =:id");
            
            return q.list();
        } catch (Exception e) {
            return null;
        }finally{
            s.close();
        }
        
        
    }
meu Bean (apenas os metodos que to usando aqui)
public class MatriculaBean {

    private Long idTurma;
 private List<Matricula> filtro = new ArrayList<Matricula>();

    public List<Matricula> getFiltro() {
         filtro = new MatriculaDAO().Filtro(idTurma);
        return filtro;
    }

    public void setFiltro(List<Matricula> filtro) {
        this.filtro = filtro;
    }
  public Long getIdTurma() {
        return idTurma;
    }

    public void setIdTurma(Long idTurma) {
        this.idTurma = idTurma;
    }

    public List<Turma> getTurmas() {
        turmas = new TurmaDAO().listaTodos();
        return turmas;
    }

    public void setTurmas(List<Turma> turmas) {
        this.turmas = turmas;
    }

e por fim meu xhtml

<h:form id="formMatricula">
<h:outputText value="Turma: "/>
                        <p:selectOneMenu id="turma" value="#{matriculaBean.idTurma}" >
                            <f:selectItem itemLabel="Selecione"  /> 
                            <f:selectItems value="#{matriculaBean.turmas}" var="turma" 
                                           itemLabel="#{turma.nome}" itemValue="#{turma.id}" >

                            </f:selectItems>
                        <p:ajax event="change" update=":listaAlunos"/>


</p:selectOneMenu>

                        <p:commandButton update=":formMatricula,:listaAlunos" value="Matricular" actionListener="#{matriculaBean.salvar}" />

                    </h:panelGrid>
                </h:form>
   <h:form  id="listaAlunos">
                <p:dataTable  rendered="#{matriculaBean.idTurma != null}" 
                              rows="10" paginator="true" 
                              value="#{matriculaBean.filtro}" 
                             var ="v" >
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Aluno"/>
                        </f:facet>
                        #{v.aluno.nome}
                    </p:column>

                    
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Turma"/>
                        </f:facet>
                        #{v.turma.nome}
                    </p:column>

                       <p:column>
                        <f:facet name="header">
                            <h:outputText value="Proficiência"/>
                        </f:facet>
                         
                           <h:outputText  rendered="#{v.proficiencia == true}" value="Sim" />
                        <h:outputText rendered="#{v.proficiencia == false}" value="Não" />

                    </p:column>

                </p:dataTable>
            </h:form>

eu quero que ele liste apenas os alunos que estão em determinada turma que eu selecionei nao sei muito de jsf nem de hql

eu sei que em SQL o comando seria
select * from Matricula where turma_id = "2"
se eu fosse seleciona apenas os alunos da turma de ID numero 2, nao sei onde está o errro ai

1 Resposta

W

metodo alterado :D

public List<Matricula> Filtro(Long id){
        Session s = HibernateUtil.getSession();
        Query q = s.createQuery("from Matricula ag where ag.turma.id = :turma");
        q.setParameter("turma", id);
        return q.list();
        
        
    }
Criado 25 de setembro de 2012
Ultima resposta 26 de set. de 2012
Respostas 1
Participantes 1