[Resolvido]Consultas Hibernate entre varias tabelas

3 respostas
Janerson

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

drsmachado

Poste as classes envolvidas.

Janerson

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
Janerson

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