Retorno boolean como fazer no DAO

13 respostas
W

bom meu problema é se ele tem algum resultado se ele retorna verdadeiro como montar eu tentei assim

public boolean verificamatricula(Long id) { Session s = HibernateUtil.getSession(); Query q = s.createQuery("from Matricula ag where ag.aluno.id = :parametro and ag.situacao = 'C'"); q.setParameter("parametro", id); return q; }

13 Respostas

H

WAO:
bom meu problema é se ele tem algum resultado se ele retorna verdadeiro como montar eu tentei assim

public boolean verificamatricula(Long id) { Session s = HibernateUtil.getSession(); Query q = s.createQuery("from Matricula ag where ag.aluno.id = :parametro and ag.situacao = 'C'"); q.setParameter("parametro", id); return q; }

E olhando o seu código… O que você acha que está errado?

W

o return q;

H

WAO:
o return q;
o q é que tipo de objeto?

W

bom vou te explicar o que eu quero fazer....

na view(xhtml), sera selecionado um aluno, no bean ele tem que pegar o id do aluno, que vai ser passado pro dao, e la tem que fazer esse query e verificar se o aluno existe e ta na situação de cursando, se retornar algo e pq ele ja ta matriculado,

no bean
private boolean verificamatricula;

    public boolean isVerificamatricula() {
        verificamatricula = new MatriculaDAO().verificaMatricula(aluno.getId());
        return verificamatricula;
    }

    public void setVerificamatricula(boolean verificamatricula) {
        this.verificamatricula = verificamatricula;
    }
H
WAO:
bom vou te explicar o que eu quero fazer....

na view(xhtml), sera selecionado um aluno, no bean ele tem que pegar o id do aluno, que vai ser passado pro dao, e la tem que fazer esse query e verificar se o aluno existe e ta na situação de cursando, se retornar algo e pq ele ja ta matriculado,

no bean
private boolean verificamatricula;

    public boolean isVerificamatricula() {
        verificamatricula = new MatriculaDAO().verificaMatricula(aluno.getId());
        return verificamatricula;
    }

    public void setVerificamatricula(boolean verificamatricula) {
        this.verificamatricula = verificamatricula;
    }
Tudo bem. Seu método espera um boolean como retorno... mas você está retornando objeto query... Então falta executar a consulta né?
W

sim, o metodo da consulta que ta dando errado o sql ta certo eu testei ja

H

WAO:
sim, o metodo da consulta que ta dando errado o sql ta certo eu testei ja
E tá dando erro por causa do retorno que você está voltando um objeto query e não um boolean…

W
eu mudei agora, so que ele so retorna false, sera problema agora no meu sql ?
public boolean verificaMatricula(Long id) {
        String hql = "from Matricula ag where ag.aluno.id = :parametro and ag.situacao = 'C'";
        Query q = HibernateUtil.getSession().createQuery(hql);
        q.setParameter("parametro", id);
        List<Matricula> res = q.list();
        HibernateUtil.getSession().close();
        if (res.isEmpty()) {
            return false;
        } else {
            return true;
        }
 }

eu testei no bean fazendo
System.out.print("ID DO ALUNO ---> "+aluno.getId());
System.out.print("NOME DO ALUNO ---> "+aluno.getNome());

ele ta puxando o id certo

e o metodo to usando

private boolean verificamatricula;

    public boolean isVerificamatricula() {
        verificamatricula = new MatriculaDAO().verificaMatricula(aluno.getId());
        return verificamatricula;
    }

    public void setVerificamatricula(boolean verificamatricula) {
        this.verificamatricula = verificamatricula;
    }
H

Você tem que testar no bean após a linha List res = q.list();

Foi isso que você fez?

Se esse cara tá trazendo vazio sempre, é por que tem algum valor indo errado. Veja se o Long id está com o valor correto.

W

esse List res = q.list(); ta no arquivo DAO

o teste que fiz foi no beam dentro do metodo salvar()

H

WAO:
esse List res = q.list(); ta no arquivo DAO

o teste que fiz foi no beam dentro do metodo salvar()

Não adianta nada testar no salvar se o problema está na hora de buscar na base.

Veja se o Long id está com valor correto.

I

Se ta retornando falso, quer dizer que nao tem nenhuma matricula com esse id e situacao = C
Sua query está certa sim…

W

descobrir + ou - o problema, o meu

private boolean verificamatricula;
    public boolean getVerificamatricula() {
        verificamatricula = new MatriculaDAO().verificaMatricula(aluno.getId());
        return verificamatricula;
    }

    public void setVerificamatricula(boolean verificamatricula) {
        this.verificamatricula = verificamatricula;
    }

que ta no beam ele ta FALSE sempre, eu fiz o teste de colocar no DAO pra retornar TRUE em qualquer condição, e no beam ele so aparece false

Criado 1 de novembro de 2012
Ultima resposta 1 de nov. de 2012
Respostas 13
Participantes 3