Duvida - Select One to Many usando Criteria

0 respostas
programaçãodesenvolvimentohibernatejavasql
4mega

Estou montando uma agenda Telefônica Interna para a empresa a qual eu trabalho e nesta agenda terá contatos favoritos, por este motivo construí as tabelas das seguintes formas:

  • Favoritos: (id_favorito, cod_contato, cod_usuario) Armazena o favorito de determinado Usuario, sendo assim, um usuário pode possuir mais de um contato favorito e um contato pode pertencer a mais de um usuario;

  • Contato: (id_contato, numero_telefone, Ramal, email) Nada mais que o contato;

  • Usuario: (id_usuario, login, senha, acesso) Usuario do sistema;

Problema:

Preciso retonar um select do tipo List usando Criteria QUE BUSQUE os Contatos Favoritos de determinado Usuario, o problema é que Favorito recebe as chaves estrangeiras, desta forma NÃO posso desenvolver o código desta forma:

Criteria criteria = session.createCriteria(Favoritos.class, "f");
criteria.createAlias("f.codContato", "contato");
criteria.add(Restrictions.eq("f.codUsuario", Usuario.getUsuarioLogin));
return criteria.list();

Deveria ser algo do tipo:

Criteria criteria = session.createCriteria(Contato.class, "c");

O select que preciso transformar seria este:

select * from contato c 
   left join favoritos f 
        on c.id_contato = f.cod_contato and 
        f.cod_usuario= 1 
order by f.id_favorito,c.id_contato

Alguém conhece uma forma de eu efetuar este select com este tipo de retorno?

Criado 29 de agosto de 2016
Respostas 0
Participantes 1