Ajuda com uma Consulta Em HQL

0 respostas
L

Ola estou com uma duvida em relação a uma consulta em HQL. Deixa eu explicar a situação:

  • Tenho uma Entidade ALUNO (id e nome) que não precisa de ninguém para ser criada, tenho também uma Entidade SALA (id e nome) que precisa de (mínimo de 1) ALUNO para ser criada e
    também uma Entidade ESCOLA (id e nome) que precisa de (mínimo 1) SALA para ser criada. Tenho uma Classe chamada RLAlunoSala ( id, idAluno, idSala, idEscola). Na tela inicial dos alunos
    tenho uma campo de pesquisa, onde o usuario pode informar as opções de pesquisa (3 opções: Nome do Aluno, Nome da Sala, Nome da Escola), queria saber como ficaria a consulta em HQL
    em relação a pesquisa.

Fiz uma consulta assim:

StringBuilder sb = new StringBuilder();

sb.append("SELECT DISTINCT a FROM RLAlunoSala rl ");
sb.append("LEFT JOIN rl.aluno a ");
sb.append("LEFT JOIN rl.sala s ");
sb.append("LEFT JOIN rl.escola e ");
sb.append("WHERE ");

if(!nomeAluno.equals(""))  {
   sb.append("a.nome = ? ");
     if(!nomeSala.equals("")) {
        sb.append("AND s.nome = ? ");
            if(!nomeEscola.equals("")) {
               sb.append("AND e.nome = ?");
            }
     }
     else if(!nomeEscola.equals("")) {
               sb.append("AND e.nome = ?");
     }
}
else if(!nomeSala.equals("")) {
        sb.append("s.nome = ? ");
            if(!nomeEscola.equals("")) {
               sb.append("AND e.nome = ?");
            }
}
else if(!nomeEscola.equals("")) {
               sb.append("e.nome = ?");
}

Existe muitas verificações repetidas, queira saber se tem algum jeito melhor de fazer esta consulta.

Obs: “?” respectivos valores para os nomes.

Criado 7 de abril de 2012
Respostas 0
Participantes 1