Pessoal
To apanhando de uma bobeira no hibernate, e queria saber se alguem tem como me ajudar.
Tenho uma classe Cliente, e uma Telefone
O Cliente tem um atributo telefones e uso lock otimista, pelo hibernate
@OneToMany(cascade=CascadeType.ALL)
private List<Telefone> telefones;
@Version
private Integer version;
Até ai, OK
No banco gerou uma tabela Cliente e uma Telefone, e uma terceira telefone_cliente
Isso pq não coloquei o relacionamento @manyToOne na classe Telefone, porque Telefone tbm se relaciona com outras entidades do meu sistema.
Dessa forma, quando quero excluir um telefone da lista, deveria excluir ele da tabela telefone_empresa e da tabela telefone. Para isso preciso carregar meu cliente do banco, excluir o telefone, e atualizar meu cliente (o hibernate altera o version), o que retira da tabela telefone_cliente. Depois tenho que carregar o telefone e excluir ele, para tirar da tabela telefone.
Se tento direto carregar o telefone e excluir ele, recebo exception, pois viola a constraint… Tem algum jeito que eu poderia excluir o telefone sem ter de atualizar meu cliente, para n£ao alterar o version dele? Pergunto o mesmo para adicionar um telefone.
Pergunto isso pelo seguinte… tenho um formulário de cliente, um pouco extenso, e que fica dividido em varios trechos. Excluir ou adcionar um telefone é feito no formulãrio, mas como são vários telefones, isso é feito por Ajax, e o resto do formulario se mantem como estava sendo preenchido (isso para atualizar o cliente)… Acontece que, se tenho de atualizar o cliente a cada telefone, o version muda, e na hora que vou atualizar outros dados do cliente, da erro no lock, e nao deixa atualizar.
Deu pra entender ou me enrolei demais?
Espero que alguem possa me ajudar nisso ai, porque me parece algo bobo, mas que nao encontrei nada sobre como resolver…
Na verdade quero o efeito de on delete cascade na constraint da tabela telefone_cliente
Valew
Quando excluo ou incluo um telefone