Mapeamento one-to-many

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

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?

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

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);

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

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!

Valeu muito obrigado, funcionou legal

Até