Problemas ao fazer uma remoção, utilizando o Toplink!
5 respostas
andersonrc
Olá galera!
Em uma aplicação com 6 entidades, estou com problemas ao excluir.
Quando excluo um time, ele é excluído sem problemas, mas acaba excluindo também o usuário(s) que têm a referência para o time.
Para não ficar difícil o entendimento, só vou deixar o método para excluir o time.
Tal método também está excluindo o Usuário que tem a id do time que está sendo passado por parâmetro no método excluirTime().
Alguém aí sabe o que posso fazer?
Estou utilizando JPA
publicvoidexcluirTime(intidTime){System.out.println("\n**********EXCLUSÃO DE TIME**********\n");daoTime.begin();Timet=daoTime.find(idTime);Autora=newAutor();if(t==null)System.out.println("Time inexistente: "+idTime);else{a.setTime(null);t=daoTime.merge(t);daoTime.remove(t);System.out.println("Time excluído com sucesso!");}daoTime.commit();}
Um time tem um usuário? Se sim, a resposta pro seu problema pode estar no Cascade, na hora que você escreve a relação entre os dois (tem um Cascade Delete ou Cascade All?).
Schwingel
posta as suas entidades Time e Usuario para vermos o mapeamento que você fez. Fica mais fácil. Está utilizando annotations? Caso contrário, poste o xml.
Abraço.
Schwingel
andersonrc
Não Andre, o usuário é que pode ter um time
Vou postar o mapeamento.
andersonrc
Schwingel:
posta as suas entidades Time e Usuario para vermos o mapeamento que você fez. Fica mais fácil. Está utilizando annotations? Caso contrário, poste o xml.
Abraço.
Schwingel
segue o mapeamento Schwingel
o fato de ter Usuário, é que tem 2 tipos. O Autor e o Administrador
andersonrc, tenta fazer essas alterações nas suas entidades.
@Entity@DiscriminatorValue("AUTOR")publicclassAutorextendsUsuario{privateStringtipo;privateStringdescricao;// se de um lado é OneToMany, do outro é ManyToOne@ManyToOne@JoinColumn(name="time")privateTimetime;
@EntitypublicclassTime{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)privateintid;privateStringnomeDoTime;// faz tudo menos deletar.@OneToMany(cascade={CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.MERGE})privateList<Autor>autores;privateStringtipo;privateStringdescricao;@OneToOne@JoinColumn(name="time")privateTimetime;