Hibernate - Consulta

1 resposta
Sandro.Santos

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

1 Resposta

_fs

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:

Criado 23 de março de 2005
Ultima resposta 23 de mar. de 2005
Respostas 1
Participantes 2