Dúvida sobre Set no Hibernate

6 respostas
ThiagoWorldCoder

Pessoal, eu estou precisando fazer uma inserção usando o hibernate em um caso one-to-many.
no meu exemplo um pedido pode ter vários itens.
esse é o mapeamento do meu pedido:

<class name="Pedido" table="PEDIDO">
  	<id name="codigo" type="long" column="CODIGO">
  		<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="ativo" type="boolean" column="ATIVO" />
  	<set name="itens" cascade="save-update,delete">
  		<key column="PEDIDOITEM" />
  		<one-to-many class="PedidoItem"/>
  	</set>

Eu não sei como vou fazer a inserção…
Alguém pode me dar um exemplo ?
Grato pela atenção!

6 Respostas

ThiagoWorldCoder

Deixa eu explicar melhor, eu sei como o usar o save, só não entendi como é nesse caso em questão!

rodrigo_gomes

Olá,

quando vc der um “save” no pedido, os itens serão salvos tbm (se houver).

[]´s

ThiagoWorldCoder

Mas eu tenho que passar pelo set o elemento? por exemplo:

PedidoItem pedidoItem = new PedidoItem();
		
pedidoItem.setProduto(produto);
pedidoItem.setValorUnit(valorUnit);
pedidoItem.setQuant(quant);

pedido.setItens((Set) pedidoItem);

conexao.save(pedido);
ThiagoWorldCoder

a minha classe está assim:

public class Pedido {

	private Long codigo;
	private String data;
	private String obs;
	private double valorTotal;
	private boolean ativo;
	private Set itens;
helders_sa

bom, aqui usei uma List mas acho que não deve ser muito diferente.

<bag name="itens" table="FI_ItensPedido" lazy="false" inverse="true" cascade="save-update,delete"> <key column="NUMG_Item"></key> <one-to-many class="br.com.org.entidade.PedidoItem" /> </bag>

Espero que te ajude,

altere-o segundo suas necessidades,

Helder S. A.

acdesouza

Primeiro:

pedido.setItens((Set) pedidoItem);

Isso não funciona. Sua classe PedidoItem não implementa Set, eu espero :slight_smile:

Você tem que criar um Set de PedidoItem e adicionar este Set no seu objeto da classe Pedido.

Set<PedidoItem> itensDoPedido = new HashSet<PedidoItem>();
PedidoItem pedidoItem = new PedidoItem();
		
pedidoItem.setProduto(produto);
pedidoItem.setValorUnit(valorUnit);
pedidoItem.setQuant(quant);

itensDoPedido.add(pedidoItem);

pedido.setItens(itensDoPedido);

conexao.save(pedido);

P.S.: Não repita seus post. Isso pode gerar má vontade de te responderem.

Criado 12 de dezembro de 2007
Ultima resposta 12 de dez. de 2007
Respostas 6
Participantes 4