Hibernate - Consulta

Oi galera,

Tenho as seguintes classes:

public class Menu {

private int cd_menu;
private String ds_menu;
private int nr_ordem;
private List secoes;

public class Secao {

private int cd_secao;
private String ds_secao;
private String ds_liberada;
private String corpo;
private String olho;
private String foto;
private String box;
private String pergunta;
private int ordemsite;
private Menu menu;
private List materias;

public class Materia {

private int cd_materia;
private Integer cd_secao;
private Integer cd_edicao;
private String ds_autor;
private String imagem_home;
private String textohome;
private String textosumario;
private List corpos;
private List olhos;
private List fotos;
private List boxs;
private List perguntas;
private Secao secao;

Como deu pra notar, tenho a classe Menu que contém uma coleção de Secao que por sua vez contém uma coleção de Materia.

Sendo assim montei a seguinte consulta:

List lista = session.find(“select distinct menus from Materia materia join materia.secao as secoes join secoes.menu as menus where materia.cd_edicao = " + edicao + " order by secoes.ordemsite asc”);

Onde deveriam vir só os Menus e Seções com Materias na edição número X.

Mas ao contrário disso ele trás todos os Menus e Seções.

[]s

Que tal assim?

Criteria c = session.createCriteria( Menu.class );
c.createAlias("secao", "secao").addOrder( Order.asc( "ordemsite" ) )
.createAlias( "materia", "materia" )
.add( Expression.eq( "cd_edicao", edicao ) );

List menus = c.list();

Não testei :expressionless: