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.