GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

JSP + JPA - Como passar a coluna de uma tabela (Utilizando Inner Join)

jsp
jpa
Tags: #<Tag:0x00007fea92af03a0> #<Tag:0x00007fea92af0210>

#1

Gente tenho um método na qual eu utilizado para criar uma lista. nesse método existe um inner join. porém eu preciso especificar a coluna q vai ser listado pois a tabela principal possui relacionamento com outras 2 tabelas e é dessas tabelas q eu preciso obter o nome. vou deixar o método abaixo.

public List listaTodos()
{
com.cleiton.salvarDados.Consultar consulta = new com.cleiton.salvarDados.Consultar ();
EntityManager obconsulta = consulta.getEntityManager();

String query = "select (A) from CADASTRO_AGENDA A INNER JOIN CADASTRO_ALUNO AA ON A.ALU_COD=AA.ALU_COD INNER JOIN CADASTRO_PROFESSOR P ON P.PRO_CODIGO=A.PRO_COD";

List<Agenda> resultado = obconsulta.createQuery(query, Agenda.class).getResultList();

obconsulta.close();

return resultado;

}
}


#2

Se puder usar SQL nativo facilita a vida e atende o resultado da funcionalidade.

public class RelatorioAgendaAlunoProfessor {
    private String nomeAluno;
    private String nomeProfessor;
	//etc..
    //get; set;
}

List resultado = obconsulta
    .createNativeQuery("select a.campo_nome_aluno as nomeAluno, p.campo_nome_professor as nomeProfessor, aa.outro_campo as etc from CADASTRO_AGENDA A INNER JOIN CADASTRO_ALUNO AA ON A.ALU_COD=AA.ALU_COD INNER JOIN CADASTRO_PROFESSOR P ON P.PRO_CODIGO=A.PRO_COD")
	.unwrap(org.hibernate.query.NativeQuery.class)
	.setResultTransformer(Transformers.aliasToBean(RelatorioAgendaAlunoProfessor.class))
	.getResultList();

#3

é um projeto da faculdade, o professor exige que a gente utiliza jpql.


#4

estou pensando em criar outro método com o model aluno. e passar essa lista dentro de outra lista.
eu sei que vai funcionar, porém é gambiarra.


#5

Se precisa seguir essas escolhas do professor, entao tem que estudar orientacao a objetos. No caso ai teria que ter um objeto Aluno e Professor em Agenda.