[Resolvido]Consultas Hibernate entre varias tabelas

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

Poste as classes envolvidas.

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

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

[code]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() {
}[/code]

Classe Mae

[code]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() {
}[/code]

Classe Foto

[code]public class Foto implements java.io.Serializable {

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

public Foto() {
}[/code]

Classe Fone

[code]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() {
}[/code]

Classe Cep

[code]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() {
}[/code]

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

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