Olá!
Pessoal, estou usando o Spring para me ajudar a trabalhar com o Hibernate, mas estou precisando criar um método para excluir o relacionamento entre duas entidades e depois remontar esse relacionamento. Na aplicação (web) eu tenho duas listas, onde uma contem os Subtemas e na outra os Subtemas que estão relacionados a um Tema. Quando eu submeto o formulário, eu envio os ids dos Subtemas. No servidor, todos os Subtemas relacionados ao Tema são removidos, os ids recebidos são iterados, faz-se uma pesquisa para cada id e vou adicionando de novo no Tema. Por fim, atualizo o Tema.
Meu problema está na hora que tento alterar algo no Tema. O primeiro erro vem quando eu tento limpar o Set que mantém os Subtemas no tema. Vejam o código:
hTemplate é um HibernateTemplate e idsSubtemasRelacionados é uma String que contém todos os ids dos Subtemas a serem relacionados, separados por traço.
if ( !idsSubtemasRelacionados.equals( "" ) ) {
o = ( Tema ) hTemplate.load( Tema.class,
Long.parseLong( request.getParameter( "id" ) ) );
// retira todos os subtemas
// o erro acontece aqui, quanto teto mudar algo do objeto recebido.
o.getSubtemas().clear();
String[] idsSubtemas = idsSubtemasRelacionados.split( "-" );
for ( String i : idsSubtemas ) {
// pesquisa cada subtema e insere no tema
o.getSubtemas().add( ( Subtema ) hTemplate.load( Subtema.class, Long.parseLong( i ) ) );
}
hTemplate.update( o );
}
Tema e Subtema estão usando um relacionamento ManyToMany, ou seja, a tabela que liga os dois é gerada pelo Hibernate e cada um está mapeado dentro do outro por um Set. O método equals está implementado tanto em Tema quanto em Subtema.
Abraço!


