Mapeamento one-to-many

6 respostas
A

Bom dia pessoal

Sou novo na lista vou ver se consiguo me espressar corretamente…

Estou com um problema em um mapeamento one-to-many o meu mapeamento ficou da seguinte maneira

<set name=“ceps” lazy=“true” inverse=“true”>

<key column=“CODMUNICIPIO”/>

<one-to-many class=“br.edu.unoesc.academico.model.pessoa.Cep”/>

</set>

Estou tentando cadastrar muitos ceps para um municipio, até ai blz o mapeamento não deu erro nenhum, consiguo mostrar na web os ceps dos municipios sem problemas, só que quando tento adicionar um novo ele não esta executando o comando insert para a tabela cep mas ele executa o update no municipio.

Estou utilizando spring(mvc, dao, service) + hibernate

Tenho um atributo ma classe municipio, para controlar os ceps
private Set ceps = new HashSet();

E no meu formController (que acho que é aonde tem o erro) tenho isto:

public ModelAndView onSubmit
{
----algumas validações—

Cep cep = new Cep();

cep.setCodigo(new Long(municipioCeps));

cep.setMunicipio(municipio);

municipio.getCeps().clear();

municipio.addCep(cep);

municipioManager.saveMunicipio(municipio);

}

Até mais

Fico no aguarde de sugestões e desde já agradeço

André luiz Forchesatto

6 Respostas

B

Bem… é o seguinte!
pelo que entendi…temos:

Municipio, que contem uma coleção de ceps, certo?

Para adicionar um Cep apenas, vocÊ deveria fazer o mapeamento inverso.

Cep está contido em Municipio.
Ai você salvaria o Cep, que pertence a um determinado municipio, ao inves de salvar uma coleção de ceps de um municipio.

Você pode salvar assim:

Municipio municipio = new Municipio();

municipio.setCepSet(cepsSet);

XX.salvar(municipio);

ou assim:

Cep cep = new Cep();

cep.setMunicipio(municipio);

XX.salvar(cep);

entendeu?

A

Certo entendi o processo como deve ser, o que não consegui visualizar é como vou pegar do html o meu cep novo e transforma-lo em um Set para salvar passar para o setCepSet

B

Se você precisa salvar uma lista, use o set.
Se precisa salvar um por vez, use a outra forma.

Como salvar num set??

Set set = new HashSet();

set.add(objeto);

Municipio.setCepSet(set);
A

Blz

Consegui resolver o problema eu queria salvar um por vez.
Unica coisa que não sei se estou fazendo certo é que estou mandando salvar o cep também ele não esta salvando automatico.

//o municipio é um objeto que vem do form web

Cep cep = new Cep();

cep.setCodigo(teste);

cep.setMunicipio(municipio);

cepManager.saveCep(cep);

municipio.addCep(cep);

municipioManager.saveMunicipio(municipio);

pensei que quando eu desce um comando
municipioManager.saveMunicipio(municipio);
ele já iria pegar o que tinha no Set ceps e salvar na tabela cep

B

Cep cep = new Cep&#40;&#41;; cep.setCodigo&#40;teste&#41;; cep.setMunicipio&#40;municipio&#41;; cepManager.saveCep&#40;cep&#41;;
Isso é suficiente para você salvar o Cep.

Com isso aqui embaixo, você estaria atualizando Municipio e salvando o Cep.

municipio.addCep(cep);

municipioManager.saveMunicipio(municipio);

Você deve usar um ou o outro!

A

Valeu muito obrigado, funcionou legal

Até

Criado 12 de abril de 2005
Ultima resposta 12 de abr. de 2005
Respostas 6
Participantes 2