Hibernate, Group By e Relacionamentos

2 respostas
passos

Estou com um problema que esta me parecendo complicado :confused:

Minhas classes:

Venda

public class Venda implements Serializable {

	private int codigo;
	private Loja loja;
	private Cliente cliente;
	private Set itens = new HashSet();

	// Outras firulas

}

VendaItem

public class VendaItem implements Serializable {

	private Venda venda;
	private Referencia referencia;
	private int quantidade;
	private float valor;
	private float desconto;
	private float precoCusto;

	// Outras firulas

}

Referencia

public class Referencia implements Serializable {
    
	private int codigo;
	private String referencia;
	private String tamanho;
	private String descricao;

	// Outras firulas

}

Busca

Criteria c = s.createCriteria(VendaItem.class)
		 
	.setFetchMode("referencia", FetchMode.JOIN)
	.setProjection( Projections.groupProperty("referencia.codigo") )
    	
    	.createCriteria( "venda", "v" )
    	.add( Restrictions.between( "data", dtini, dtfim ) )

	.createCriteria( "v.loja", "l" )
	.add( Restrictions.eq( "codigo", new Integer(codLoja) ) );

        return c.list();

Se eu tiro o groupProperty ele tras todas os itens de venda do periodo bla bla bla porem, se eu coloco o groupProperty ele so tras o que ta no groupProperty (vendo o SQL)

Bom… eu preciso listar alguns dados como valores de venda etc… de um item de venda agrupado pelas referencias…

Será que me fiz entender? :stuck_out_tongue:

2 Respostas

_fs

Pode postar os SQLs gerados em ambas as situações?

passos

Com o agrupamento

select 
this_.cod_produto as y0_ 
from 
item_venda this_ left outer join v_referencia referencia4_ 
on this_.cod_produto=referencia4_.cod_ident_refer 
inner join venda v1_ on this_.cod_venda = v1_.cod_venda 
inner join loja l2_ on v1_.cod_loja=l2_.cod_loja 
where 
v1_.dat_venda between ? and ? and l2_.cod_loja=? 
group by this_.cod_produto

Sem o agrupamento

select this_.cod_item as cod1_3_, this_.v
al_custo as val2_186_3_, this_.val_desconto as val3_186_3_, this_.cod_produto as
 cod4_186_3_, this_.val_produto as val5_186_3_, this_.qtd_quantidade as qtd6_186
_3_, this_.cod_tributacao as cod7_186_3_, this_.cod_venda as cod8_186_3_, this_.
val_venda as val9_186_3_, referencia4_.cod_ident_refer as cod1_0_, referencia4_.
ind_carga as ind2_175_0_, referencia4_.dsc_cor as dsc3_175_0_, referencia4_.ind_
descontinuado as ind4_175_0_, referencia4_.cod_familia_prod as cod5_175_0_, refe
rencia4_.cod_grupo as cod6_175_0_, referencia4_.cod_secao as cod7_175_0_, refere
ncia4_.cod_subsecao as cod8_175_0_, referencia4_.val_ultimo_custo as val9_175_0_
, referencia4_.ind_excl_unisys as ind10_175_0_, referencia4_.ind_bloq_req_loja a
s ind11_175_0_, referencia4_.dsc_completa as dsc12_175_0_, referencia4_.cod_refe
r_unisys as cod13_175_0_, referencia4_.cod_tamanho as cod14_175_0_, referencia4_
.dsc_referencia as dsc15_175_0_, v1_.cod_venda as cod1_1_, v1_.cod_cliente as co
d2_184_1_, v1_.nro_cupom as nro3_184_1_, v1_.nro_caixa as nro4_184_1_, v1_.dat_v
enda as dat5_184_1_, v1_.val_desconto as val6_184_1_, v1_.cod_funcionario as cod
7_184_1_, v1_.cod_loja as cod8_184_1_, v1_.tot_venda as tot9_184_1_, v1_.val_tro
co as val10_184_1_, l2_.cod_loja as cod1_2_, l2_.dsc_bairro as dsc2_170_2_, l2_.
nro_cep as nro3_170_2_, l2_.dsc_cidade as dsc4_170_2_, l2_.nro_cnpj as nro5_170_
2_, l2_.dsc_endereco as dsc6_170_2_, l2_.nom_fantasia as nom7_170_2_, l2_.nro_in
sestadual as nro8_170_2_, l2_.nro_telefone as nro9_170_2_, l2_.cod_uf as cod10_1
70_2_ from item_venda this_ left outer join v_referencia referencia4_ on this_.c
od_produto=referencia4_.cod_ident_refer inner join venda v1_ on this_.cod_venda=
v1_.cod_venda inner join loja l2_ on v1_.cod_loja=l2_.cod_loja where v1_.dat_ven
da between ? and ? and l2_.cod_loja=?
Criado 27 de julho de 2005
Ultima resposta 27 de jul. de 2005
Respostas 2
Participantes 2