Não está dando delete no @OneToMany na remoção do relacionamento!  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
phstc
JavaTeenager

Membro desde: 13/04/2004 12:22:22
Mensagens: 195
Localização: São Paulo, SP
Offline

Pessoal,

Tenho duas classes

Sistema e DivisoesSistema

Sistema tem uma lista de divisõesSistema



DivisoesSistema tem um long que é o ID_SIST_FK


No banco são duas tabelas
Sistema e DivisaoSistema,
DivisaoSistema tem uma FK para Sistema que é o ID_SIST_FK e Sistema não tem nenhum relacionamento com DivisaoSistema.

Meu problema é seguinte,
quando tento excluir alguma DivisaoSistema da lista de divisoesSistema na classe Sistema, ao invés dele fazer um DELETE no registro no banco,
ele faz update na tabela DivisaoSistema setando o ID_SIST_FK como null,
como eu faço para ele excluir, tipo delete-orphan?

Tentei colocar esse annotation que achei na net



Mas não resolveu, alguém pode me ajudar?

Abs,
Pablo
[Email]
vegetasw
HelloWorld
[Avatar]

Membro desde: 27/03/2007 13:02:51
Mensagens: 23
Localização: Franco da Rocha - SP
Offline

Não seria: "all-delete-orphan"?

Nenhuma mulher resiste a uma boa cantada, principalmente a dos pneus!
[MSN]
phstc
JavaTeenager

Membro desde: 13/04/2004 12:22:22
Mensagens: 195
Localização: São Paulo, SP
Offline

no annotation não tem mais essa opção, somente all ou delete-orphan
[Email]
fre_d
JavaTeenager

Membro desde: 13/06/2007 17:42:02
Mensagens: 157
Localização: Lages - SC
Offline

Encontrei o mesmo problema, alguém encontrou uma solução ? Eu alterei a coluna da tabela para null pois depois que faz o update o hibernate faz o delete das entidades órfas. O problema é que o banco de dados fica sem integridade.

Se alguém puder ajudar posta aí...

Valeu
acdesouza
JavaBaby
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 88
Offline

Na classe Sistema:


Na classe DivisaoSistema:


Não acredito que precise colocar a anotação no atributo, tenta primeiro colocando no método, mesmo. Caso não funcione tente no atributo, mas acho pouco provável que faça diferença neste caso.

[],
AC
[WWW]
fre_d
JavaTeenager

Membro desde: 13/06/2007 17:42:02
Mensagens: 157
Localização: Lages - SC
Offline

Existe alguma forma de fazer sem ter que adicionar @ManyToOne na classe DivisaoSistema ?

ex.

acdesouza
JavaBaby
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 88
Offline

Não que eu saiba. Mas qual o problema que você está vendo em adicionar o Sistema na classe DivisaoSistema?

[],
AC
[WWW]
fre_d
JavaTeenager

Membro desde: 13/06/2007 17:42:02
Mensagens: 157
Localização: Lages - SC
Offline


Se não utilizar @ManyToOne quando carregar a classe DivisaoSistema não preciso carregar a classe Sistema.

Consegui fazer assim
Classe: DisciplinaCurriculo



Classe: IntegridadePrEqRp


Só que dessa forma é necessário que a coluna id_disciplina_curriculo da classe IntegridadePrEqRp aceite null. Pois o hibernate faz o update IntegridadePrEqRp id_disciplina_curriculo = null e depois faz o delete.

acdesouza
JavaBaby
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 88
Offline

fre_d wrote: Se não utilizar @ManyToOne quando carregar a classe DivisaoSistema não preciso carregar a classe Sistema.


Tem certeza? É que eu tenho um sistema com as classes assim:


E a classe PedidoMaterial que guarda os atributos da associação entre Pedido e Material.


E se eu faço a consulta hql:


O Hibernate gera a consulta:


Isto é, não faz consulta sobe o Pedido. Tem certeza de que está acontecendo isso?
Qual a versão do Hibernate você está usando? Não teria um fetch=FetchType.EAGER no seu @ManyToOne, perdido, por aí, não?

[],
AC
[WWW]
acdesouza
JavaBaby
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 88
Offline

POST REPETIDO, FAVOR APAGAR

This message was edited 1 time. Last update was at 29/09/2007 14:25:34


[],
AC
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team