[Resolvido]Consultas Hibernate entre varias tabelas

3 respostas
J

Ola galera como que eu faço essa consulta abaixo no hibernate
uso mapeamento hbm.xml
como seria isso usando criteria/hql/inner join …
seria correto usar o sql nativo no hibernate?

SELECT 
  a.matricula,
  a.dataMatricula,
  a.nome,
  a.dataNascimento,
  a.rg,
  a.cpf,
  a.endereco,
  a.observacao,
  a.cep,
  ft.foto,  
  s.genero,
  c.logradouro,
  c.bairro,
  c.cidade,
  c.estado,
  m.nome AS Mae,
  m.cpf AS CPF_MAE,
  m.profMae AS Prof_MAE,
  f.celular AS Cel_MAE,
  f.residencial AS Res_MAE,
  f.comercial AS Com_MAE,
  p.nome AS Pai,
  p.cpf AS CPF_PAI,
  p.profPai,
  f.celular AS Cel_PAI,
  f.residencial AS Res_PAI,
  f.comercial AS Com_PAI  
  FROM aluno a , sexo s, cep c, mae m , pai p, fone f, foto ft      WHERE a.matricula = ''
  AND a.idFoto = ft.idFoto
  AND a.idMae = m.idMae
  AND a.idPai = p.idPai
  AND a.cep = c.cep
  AND m.idFone = f.idFone
  AND p.idFone = f.idFone

3 Respostas

D

Poste as classes envolvidas.

J

Opa desculpe mim expressei mal

Vamos lá...estou desenvolvendo uma aplicação para conclusão do curso na faculdade segue print
para operações junto ao BD eu utilizo o hibernate
so que estou tendo problemas para retornar os dados de tabelas relacionadas

[img]http://uploaddeimagens.com.br/images/000/143/807/full/print.png?[telefone removido][/img]

SQL da consulta

SELECT 
  a.matricula,
  a.dataMatricula,
  a.nome,
  a.dataNascimento,
  a.rg,
  a.cpf,
  a.endereco,
  a.observacao,
  a.cep,
  ft.foto,  
  s.genero,
  c.logradouro,
  c.bairro,
  c.cidade,
  c.estado,
  m.nome AS Mae,
  m.cpf AS CPF_MAE,
  m.profMae AS Prof_MAE,
  f.celular AS Cel_MAE,
  f.residencial AS Res_MAE,
  f.comercial AS Com_MAE,
  p.nome AS Pai,
  p.cpf AS CPF_PAI,
  p.profPai,
  f.celular AS Cel_PAI,
  f.residencial AS Res_PAI,
  f.comercial AS Com_PAI  
  FROM aluno a , sexo s, cep c, mae m , pai p, fone f, foto ft      WHERE a.matricula = ''
  AND a.idFoto = ft.idFoto
  AND a.idMae = m.idMae
  AND a.idPai = p.idPai
  AND a.cep = c.cep
  AND m.idFone = f.idFone
  AND p.idFone = f.idFone
Classe Aluno
public class Aluno implements java.io.Serializable {

    private Integer idAluno;
    private Sexo sexo;
    private Pai pai;
    private Foto foto;
    private Cep cep;
    private Mae mae;
    private String matricula;
    private String nome;
    private String rg;
    private String cpf;
    private Date dataNascimento;
    private String endereco;
    private Date dataMatricula;
    private byte[] observacao;
    private Set turmaAsAlunos = new HashSet(0);
    private Set notases = new HashSet(0);

    public Aluno() {
    }

    // getters e setters
Classe Pai
public class Pai  implements java.io.Serializable {


     private Integer idPai;
     private Fone fone;
     private String nome;
     private String cpf;
     private String profPai;
     private String email;
     private Set alunos = new HashSet(0);

    public Pai() {
    }
Classe Mae
public class Mae  implements java.io.Serializable {


     private Integer idMae;
     private Fone fone;
     private String nome;
     private String cpf;
     private String profMae;
     private String email;
     private Set alunos = new HashSet(0);

    public Mae() {
    }
Classe Foto
public class Foto  implements java.io.Serializable {


     private Integer idFoto;
     private byte[] foto;
     private int alMatricula;
     private Set alunos = new HashSet(0);

    public Foto() {
    }
Classe Fone
public class Fone  implements java.io.Serializable {


     private Integer idFone;
     private String celular;
     private String residencial;
     private String comercial;
     private Set maes = new HashSet(0);
     private Set pais = new HashSet(0);

    public Fone() {
    }
Classe Cep
public class Cep  implements java.io.Serializable {


     private String cep;
     private String logradouro;
     private String bairro;
     private String cidade;
     private String estado;
     private Set alunos = new HashSet(0);

    public Cep() {
    }

Quero fazer a consulta e preencher todos os dados nos campos do print acima
o problema é como fazer uma consulta usando o Hibernate HQL / Criteria / SQL nativo

Seria correto passar um comando sql nativo no hibernate?

e como extrair todos esses dados de uma consulta?

tipo assim
Aluno a = AlunoDAO.buscar(String matricula);

Usando um método desse tipo retornar os dados das tabelas pai , mae , etc...que estao relacionadas
J

Ola consegui resolver

eu estava muito preso ao SQL e estava esquecendo
o conceito de OO…e que o próprio hibernate se encarrega
de trazer todos os dados de tabelas relacionadas bastando apenas eu usar
meus métodos get e set

Criado 24 de dezembro de 2013
Ultima resposta 26 de dez. de 2013
Respostas 3
Participantes 2