dúvida sobre one-to-many no hibernate

2 respostas
ThiagoWorldCoder

eu já sei fazer o mapeamento, só não sei como seria o jeito de salvar, alguém pode me explicar?
grato

2 Respostas

cassio

:arrow: Se o item que você quer incluir na lista já é persistente, basta recuperar o objeto dono da lista, adicionar o item, pegar a session e salvar o objeto.
:arrow: Se o item que você quer incluir ainda não está salvo, salve-o primeiro, caso contrário o Hibernate não vai refletir o estado dos seus objetos no banco. Após salvar, faça como no item anterior.

Imaginando que sua classe tenha uma lista de objetos da classe Item e exponha um método addItem(Item i) para incluir novos itens nesta lista, algo como

public class SuaClasse implements Serializable {
   //...
   @OneToMany
   private List<Item> itens = new ArrayList<Item>();

   //...

   public void addItem(Item i) {
      itens.add(i);
   }
}

Se o item já estiver persistido

SuaClasse seuObjeto = session.load(SuaClasse.class, id);
seuObjeto.addItem(novoItem);
session.saveOrUpdate(seuObjeto);

Se o item for transiente

session.save(novoItem);
SuaClasse seuObjeto = session.load(SuaClasse.class, id);
seuObjeto.addItem(novoItem);
session.saveOrUpdate(seuObjeto);
session.
ThiagoWorldCoder

mas de qualquer modo no xml está dando um erro, não sei o que é olha o xml.

<property name="data" type="string" column="DATA" />
	<property name="valorTotal" type="double" column="VALORTOTAL" />
  	<property name="ativo" type="boolean" column="ATIVO" />
  	<list name="itens">
  		<key column="PEDIDOITEM" />
  		<one-to-many class="PedidoItem"/>
  	</list>

eu não entendi isso aqui -> session.load(SuaClasse.class, id);
desculpe a pergunta boba mas eu sou novato ainda!

Criado 12 de dezembro de 2007
Ultima resposta 12 de dez. de 2007
Respostas 2
Participantes 2