Delete no hibernate

8 respostas
ThiagoWorldCoder

Bom dia pessoal, eu tenho um relacionamento de um-para-muitos, ou seja, um pedido pode ter vários itens, e eu quero deletar, o conjunto de itens que tem um determinado id de pedido. Não tô entendendo como fazer isso, alguém pode me dar uma dica, ou exemplo?

valeu

8 Respostas

Filipe_Portes

Bom se o seu mapeamento no Pedido for um Bag com os itens…
formando uma lista de itens…

então é so limpar essa lista e limpar a referência dos itens e atualizar…

envie seu mapeamento que sera mais facil lhe ajudar

ThiagoWorldCoder
só que o meu mapeamento está com o cascade= none!! Será que mesmo o cascade sendo none funciona? Vou tentar fazer isso que você falou, valeu!
<hibernate-mapping package="bean">
  <class name="Pedido" table="PEDIDO">
  	<id name="codigo" type="long" column="IDPEDIDO">
  		<generator class="native" />
  	</id>

  	<property name="obs" type="string" column="OBS" />
  	<property name="data" type="string" column="DATA" />
	<property name="valorTotal" type="double" column="VALORTOTAL" />
  	<property name="situacao" type="boolean" column="SITUACAO" />
  	<!-- com a opção cascade none, o sistema pode ficar mais protegido -->
  	<set name="itens" inverse="false"  cascade="none" order-by="IDPEDIDO" >
  		<key column="IDPEDIDO" not-null="true"/>
  		<one-to-many class="PedidoItem" />
  	</set>
  </class>
</hibernate-mapping>
<id name="idPedidoItem" type="long" column="PEDIDOITEM">
  		<generator class="native" />
  	</id>
  	<property name="produto" type="string" column="PRODUTO" />
  	<property name="valorUnit" type="double" column="VALORUNIT" />
  	<property name="quant" type="integer" column="QUANTIDADE" />
  	<property name="idPedido" type="long" column="IDPEDIDO" insert="false" update="false" />
ThiagoWorldCoder

Como é que eu faço pra limpar?

leandro.anjos

Você pode alterar o parametro cascade para ALL, assim sempre que um pedido for excluido
todos os itens serão excluidos também :smiley:

ThiagoWorldCoder

só que tem um detalhe, e se eu quiser deletar apenas os items no pedido?!

ThiagoWorldCoder

Quero dizer, deletar os itens de um determinado pedido…

leandro.anjos

Cara tenho quase certa de que não haverá problemas, pois o mapeamento esta sendo utilizado na classe Pedido como many-to-one

Para que ocorresse esse problema, você teria que ter mapeado um one-to-many na classe Item e lá colocar um cascade=“ALL”

mas vou testar um exemplo aqui e já posto caso de certo

ThiagoWorldCoder

Só que não existe nenhum many-to-one, na classe itens, eu tenho um set em pedido apenas, será que esse é o problema? Observe os exemplos do mapeamento…

Criado 21 de dezembro de 2007
Ultima resposta 21 de dez. de 2007
Respostas 8
Participantes 3