Problemas com query no Hibernate

1 resposta
bonfarj

To quebrando a cabeca desde ontem... quem souber/puder ajudar... :D

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
<hibernate-mapping> 
	<class name="br.com.nomus.modelo.entidade.ItemPedidoCompra" table="itempedidocompra">
	  			
		<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>
</hibernate-mapping>
Os.hbm.xml
<hibernate-mapping> 
	<class name="br.com.nomus.modelo.entidade.Os" table="os">
		
		<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>
</hibernate-mapping>

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? :P

valeu pessoal! :wink:

1 Resposta

bonfarj

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!!

Criado 23 de maio de 2006
Ultima resposta 23 de mai. de 2006
Respostas 1
Participantes 1