Hibernate Query Language
14/02/2018
0
Olá pessoa. Sou novo nesse mundo de Spring, Hibernate, HQL, JPA, etc. Por isso me desculpem pela dúvida que poderá parecer um tanto quanto simples.
Tenho as seguintes tabelas, mapeadas dessa maneira:
Tenho também o seguinte:
E agora a dúvida é aqui, na hora de fazer o select.
Não tenho problema com paramêtros mas sim em fazer o JOIN. Por padrão o Hibernate retorna os objetos conforme o mapeamento.
Nesse caso abaixo, um select simples na tabela Usuario ele está me retornando a tabela Pessoa e PessoaFisica, porém não a Academico que contém o id (chave primária) que futuramente seria a matrícula.
Enfim preciso fazer o JOIN entre a PessoaFisica e a Academico.
Agradeço desde já a ajuda.
Tenho as seguintes tabelas, mapeadas dessa maneira:
@Entity @Table(name = "tb_pessoa") public class Pessoa { @Id @Column(name = "id_pessoa") @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(name = "nome_pessoa") private String nomePessoa; }
@Entity @Table(name = "tb_pessoa_fisica") public class PessoaFisica { @Id @Column(name = "id_pessoa_fisica") @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @ManyToOne @JoinColumn(name = "id_pessoa") private Pessoa pessoa; }
@Entity @Table(name = "tb_usuario") public class Usuario { @Id @Column(name = "id_usuario") @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @ManyToOne @JoinColumn(name = "id_pessoa_fisica") private PessoaFisica pessoaFisica; }
@Entity @Table(name = "tb_academico") public class Academico { @Id @Column(name = "id_academico") @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @ManyToOne @JoinColumn(name = "id_pessoa_fisica") private PessoaFisica pessoaFisica; }
Tenho também o seguinte:
@PostMapping @RequestMapping("/realizarLogin") public List<Usuario[]> realizarLogin(@RequestBody LoginDTO loginDTO) throws ServerException { this.validarParametrosEntrada(loginDTO); List<Usuario[]> usuarioAutenticado = autenticacaoDAO.obterUsuarioPeloLogin(loginDTO); if (usuarioAutenticado == null) { throw new ServerException(MensagemValidacao.MATRICULA_NAO_ENCONTRADA); } return usuarioAutenticado; }
E agora a dúvida é aqui, na hora de fazer o select.
@Repository public class AutenticacaoDAOImpl implements AutenticacaoDAO { @PersistenceContext private EntityManager manager; @Override public List<Usuario[]> obterUsuarioPeloLogin(LoginDTO loginDTO) { String hql = "from Usuario"; Query query = manager.createQuery(hql); List<Usuario[]> listResult = query.getResultList(); /*for (Usuario[] row : listResult) { Usuario usuario = row[0]; }*/ return listResult; } }
Não tenho problema com paramêtros mas sim em fazer o JOIN. Por padrão o Hibernate retorna os objetos conforme o mapeamento.
Nesse caso abaixo, um select simples na tabela Usuario ele está me retornando a tabela Pessoa e PessoaFisica, porém não a Academico que contém o id (chave primária) que futuramente seria a matrícula.
Enfim preciso fazer o JOIN entre a PessoaFisica e a Academico.
Agradeço desde já a ajuda.
Leonardo
Curtir tópico
+ 0
Responder
Posts
04/03/2018
Phellipe Rodrigues
Boa tarde amigo, neste artigo da DevMedia tem um exemplo falzendo um select relacionando 3 tabelas, de uma lida nele e veja os exemplo, acreditoque se ira tirar sua duvida<br />
https://www.devmedia.com.br/java-persistence-api-jpa-primeiros-passos/30511
Responder
Clique aqui para fazer login e interagir na Comunidade :)