| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/03/2010 15:27:29
|
nakhan
HelloWorld
Membro desde: 15/10/2009 13:22:52
Mensagens: 12
Offline
|
Estou com um problema no minha aplicação, não estou conseguindo deletar em cascata no hibernate annotation, ele deleta normal mas deixa os orfãos
eis o codigo:
@Entity
@Table(name="Visita")
public class Visitas implements Serializable {
@GeneratedValue
@Id
Long idVisita;
@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.REMOVE})
@JoinColumn(name="Vereadores_idVereadores")
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
Vereadores vereadores = new Vereadores();
@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.REMOVE})
@JoinColumn(name="visitantes_idVisitantes")
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
visitantes visitantes = new visitantes();. . .
ou seja minha entidade Visitas tem essas duas forinkeys das entidades Vereadores e Visitantes, outra coisa na hora que deleto os dados da entidade Vereador logicamente deveria deletar também as visitas para esse vereador o que não esta acontecendo gostaria que alguem pudesse me ajudar na resolução desse problema.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/03/2010 15:29:27
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
Usei isso e resolveu.
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2010 14:42:07
|
nakhan
HelloWorld
Membro desde: 15/10/2009 13:22:52
Mensagens: 12
Offline
|
Tentei esse codigo mas ainda não deu certo. O hibernate não deleta em cascata nem a pau o que pode ter de errado????
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2010 23:14:05
|
LPJava
GUJ Hacker
Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline
|
deleta sim. poe ai em cascata sua anotacao. Agora veja no seu banco se o indice de sua coluna está como ALL. Se estiver usando o mysql, deve criar o indice manulamente primeiro depois que criar os FKs informar que o modo cascade será ALL.
Eu usei:
|
Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 10:15:09
|
nakhan
HelloWorld
Membro desde: 15/10/2009 13:22:52
Mensagens: 12
Offline
|
Bom ja tentei de tudo coloquei o castade=CascadeType.ALL e deu um erro estranho, agora além de ainda não deletar em castaca quando salvo alguma visita na tabela de visitas na tabela de vereadores o nome dele fica null isso só pq coloquei essa anotação. bom dei uma olhadinha no banco, eu uso o mysql e lá os indices estão assim:
PRIMARY PRIMARY idVisita
Visita_FKIndex1 INDEX visitantes_idvisitantes
Visita_FKIndex2 INDEX Vereadores_idVereadores
obs: Estou usando o phpadmin do easyphp
quando deleto um vereador as visitas referente a ele não deleta só aparece assim no hibernate:
Hibernate: delete from Vereadores where idVereadores=? e não faz a cascade funcionar.
ja tentei até coloco OneToMay na classe vereadores com a cascade all e tb não funcionou.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/09/2010 09:10:28
|
_Zell_
Debugger
![[Avatar]](/images/avatar/c46d911158c4a27e0c85eaf1a1266a33.jpg)
Membro desde: 21/07/2010 15:44:12
Mensagens: 66
Offline
|
Olá.
Sei que o tópico é do inicio do ano mas vou postar mesmo assim. Pode ser útil para aguém que chega até aqui via Google =)
Eu tenho duas tabelas no meu banco de dados, a Student e Adress, onde na tabela Student tem um FK para Adress. Quando eu quero apagar um registro de Aluno (Student) eu também quero que ele apage o endereço dele na tabela Adress automaticamente. Então para isso eu estou mapeando da seguinte forma:
Ou seja, para apagar o registro de endereço eu só adiciono "cascade = CascadeType.ALL" na declaração "@OneToOne", ficando "@OneToOne(cascade = CascadeType.ALL) @JoinColumn(name="adress")"
Espero ter ajudado!
Abraço o/
|
|
|
 |
|
|