Problemas com query no Hibernate

To quebrando a cabeca desde ontem… quem souber/puder ajudar… :smiley:

Um ItemPedidoCompra possui um atributo qtdePedida, que seria um numero de pecas a serem criadas. Essas pecas sao criadas em ordens de servico, que sao representadas no sistema pela classe Os. Essa classe possui um atributo qtdePecas, que seriam as pecas a serem criadas nessa OS. Para fechar um ItemPedidoCompra, temos que abrir uma ou mais OS’s de forma que a soma de qtdePecas de todas as OS’s seja igual a qtdePedida do ItemPedidoCompra. Caso contrario, esse ItemPedidoCompra esta pendente.
Esse é o ponto… eu preciso fazer uma query q busque todos os itens pendentes… vou mostrar o mapeamento:

ItemPedidoCompra.hbm.xml

[code]

	<id name="id" column="id">
		<generator class="increment"/>
	</id>
		  
	<property name="nome"/>
	<property name="qtdePedida"/>
	<property name="precoUnitario"/>
	<property name="dataEntrega"/>
	<property name="ordemCliente"/>
	<property name="projetoCliente"/>
	<property name="codMateriaPrima"/>
	<property name="numSerieMP"/>
	
	<many-to-one name="pedidoCompra" column="idPedidoCompra" lazy="false" 
				class="br.com.nomus.modelo.entidade.PedidoCompra"/>
				
	<many-to-one name="produto" column="idProduto" lazy="false" 
				class="br.com.nomus.modelo.entidade.Produto"/>

	<bag name="materiasPrima" lazy="false">
		<key column="idItemPedidoCompra"/>
		<one-to-many class="br.com.nomus.modelo.entidade.MateriaPrima"/>
	</bag>

	<bag name="os" lazy="false">
		<key column="idItemPedidoCompra"/>
		<one-to-many class="br.com.nomus.modelo.entidade.Os"/>
	</bag>
	
	<bag name="observacoes" table="observacao_itempedidocompra" lazy="false">
		<key column="idItemPedidoCompra"/>			
		<many-to-many column="idObservacao" class="br.com.nomus.modelo.entidade.Observacao"/>
	</bag>
				
</class>

[/code]

Os.hbm.xml

[code]

	<id name="id" column="id">
		<generator class="increment" /> 
	</id>
	
	<property name="nome"/>
	<property name="qtdePecas"/>
	<property name="qtdeFaturada"/>
	<property name="qtdeSucateada"/>
		
	<many-to-one name="itemPedidoCompra" column="idItemPedidoCompra" 
		lazy="false"
		class="br.com.nomus.modelo.entidade.ItemPedidoCompra"/>
		
	<bag name="faturamentos" lazy="false">
		<key column="idOs"/>
		<one-to-many class="br.com.nomus.modelo.entidade.Faturamento"/>
	</bag>
	
	<bag name="observacoes" table="observacao_itempedidocompra" lazy="false">
		<key column="idItemPedidoCompra"/>			
		<many-to-many column="idObservacao" class="br.com.nomus.modelo.entidade.Observacao"/>
	</bag>
		
</class>

[/code]

Abaixo a query que eu fiz, esta errada… :oops:

String hql = "select itens from ItemPedidoCompra itens" + " join itens.os os" + " where itens.qtdePedida > (select sum(os.qtdePecas) from Os)";

alguem pode dar uma ajuda? :stuck_out_tongue:

valeu pessoal! :wink:

Consegui!! A query ficaria assim:

String hql = "select itens from ItemPedidoCompra itens" + " where itens.qtdePedida > (select sum(os.qtdePecas) + sum(os.qtdeSucateada) from itens.os os)" + " order by itens.pedidoCompra.nome";

falou pessoal!!