Problema ao remover entidades da base de dados(Resolvido)  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
Will_HRock
JavaGuru

Membro desde: 11/04/2009 20:40:23
Mensagens: 211
Offline

Pessoal, estou com um problema para remover as entidades na minha base de dados.

Eu possuo no banco de dados 3 entidades(Shopping, Loja e Produto), com um relacionamento um-para-muitos nesta mesma ordem.
Porém quando vou deletar um Shopping que possui uma loja, ou uma loja que possui muitos produtos, vejo o seguinte erro:



O que eu queria é que quando eu removesse uma loja com produtos, os produtos desta loja automaticamente fossem removidos.
Eu até coloquei o atributo cascade = CascadeType.ALL na anotação das entidades, achei que isso era a solução, mas o problema persiste ainda.
Estou usando o NetBeans 6.8, JPA 2.0.

O que faço? Agradeço desde já a atenção.

This message was edited 2 times. Last update was at 18/02/2010 01:24:45

[Email] [MSN]
fbdo
Thread.start()
[Avatar]

Membro desde: 13/07/2003 14:59:06
Mensagens: 29
Localização: Brasil
Offline

Olá Will_HRock!

Não sei se é o caso, você não mandou seu código, mas é muito provável que você não tenha configurado suas entidades para aplicar as alterações em cascata. Então, ou vc exclui as entidades na ordem de forma a não causar o conflito, ou então adiciona na anotação do relacionamento como no exemplo:

@OneToMany(cascade=ALL)

Adicionando ALL será aplicado às entidades associadas todas as operações (INSERT, UPDATE, DELETE) de forma implícita.

Fazendo uma busca rápida, encontrei o artigo http://www.theserverside.com/tt/articles/article.tss?l=JPAObjectModel. Pode ajudar.

Abraços!

Fábio Braga de Oliveira
http://www.smallthoughts.com.br

Fábio Braga de Oliveira
http://www.smallthoughts.com.br
[WWW] [ICQ]
fbdo
Thread.start()
[Avatar]

Membro desde: 13/07/2003 14:59:06
Mensagens: 29
Localização: Brasil
Offline

Nossa, Will, desculpe a minha falha.

Acho que não acordei ainda, não vi a segunda parte da sua mensagem, onde vc dizia que já colocou o cascade.ALL.

No caso, tô sem pistas... Pode publicar seu código?

Como eu queria poder apagar uma mensagem... maldito dedo rápido....

Fábio Braga de Oliveira
http://www.smallthoughts.com.br
[WWW] [ICQ]
Will_HRock
JavaGuru

Membro desde: 11/04/2009 20:40:23
Mensagens: 211
Offline

Esse é o código da entidade Loja:



Eu consegui um workaround no método que persiste minha entidade, fazendo o Shopping referenciar a entidade loja ao mesmo tempo que a loja referencia o shopping, assim:



Não sei se é o jeito mais correto mas funcionou, se souber de algo melhor que eu possa fazer agradeço! valeu!
[Email] [MSN]
fbdo
Thread.start()
[Avatar]

Membro desde: 13/07/2003 14:59:06
Mensagens: 29
Localização: Brasil
Offline

Will, você está usando o EclipseLink com o JPA 2.0, certo? Você está fazendo o weaving das classes? Num projeto meu aqui, eu uso maven e faço weaving estático, pra funcionar eu adicionei no pom.xml:



e no persistence.xml:



Se não estiver fazendo weaving, tenta e fala o resultado. Boa sorte!

Fábio Braga de Oliveira
http://www.smallthoughts.com.br
[WWW] [ICQ]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team