CascadeType.LOCK ou EVICT alguem sabe exatamente como é?

6 respostas
Lavieri

Tipo pessoal, estou querendo forçar não apagar caso exista o relacionamento... ai eu não sei se uso o LOCK ou EVICT ... alguem sabe como fazer ??

o que quero saber é como fazer o RESTRIC do mysql por exemplo, para evitar apagar.

é tipo assim

Chamado {
    Pessoa autor;
}


Pessoa {
   //list de chamados (mas não fiz o relacionamento nesta ponta, se precisar posso fazer
}

o que quero é... se houver Chamados, então o Autor não pode ser apagado .... tem como fazer isso por cascata do Hibernate ?

6 Respostas

juniorsatanas

Mano nos sistemas aqui… não existe apagar… pois vai tudo para auditoria… já pensou nisso ?

Lavieri

yep, mas acarreta no mesmo problema…

como ao desativar uma pessoa, ele checar se há chamado desta pessoa, e não liberar a desativação ? é complicado

Paulo_Silveira

oi lavieri

a foreign key criada ja nao garante isso?

Lavieri

Paulo Silveira:
oi lavieri

a foreign key criada ja nao garante isso?

se eu criar a Foreign key sim… mas eu gosto de deichar o banco sendo gerado no automatico, pelo hibernate… e ele não gera com essas opções…

G

Não sei se entendi muito bem sua dúvida. Mas se você tem uma entidade Cliente e uma lista de Pedido as implementações de JPA criam sim as FKs. E quando você tentar excluir ou você pode fazer testar antes se há dependencias ou deixar a constraint estourar. É isso que você precisa?

Se você por acaso está usando Hibernate com MySQL lembre-se que o dialect tem que estar para InnoDB, senão o padrão do MySQL é MyISAM que não possui FK.

leonpoa

Lavieri,

Sei exatamente qual o seu problema, porém também não tenho a solução. Caso não tenham entendido, quando gerados as constraints pelo hibernate (com annotations) as mesmas são geradas ‘NO ACTION’ então mesmo possuindo a restrição a mesma não funciona como deveria, ou seja, não apagar um registro caso tenha uma referencia, ‘RESTRICT’.

Vlw.

Criado 29 de março de 2010
Ultima resposta 23 de mai. de 2010
Respostas 6
Participantes 5