Hibernate seta como null o campo

5 respostas
ArthurTurtle

Ola a todos!!
Bom minha duvida eh a seguinte, eu fiz uma aplicação web com o Vraptor e o Hibernate ja ta rodando certinho, a duvida é: Quando eu removo um registro da tabela eu acho q o hibernate seta esse registro como null apena se não deleta ele, exemplo eu tinha um cliente cujo o Id era 1 apos ter deletado esse cliente, o proximo que seria o de Id 2 deveria assumir o Id 1 não é?

Não sei é coisa do Hibernate ou do meu codigo, mais essa é uma duvida minha.
Não sei se fui claro ao passar a questão a voceis, caso não tenha sido, porfavor falem que eu escrevo de outra forma.

Vlww

5 Respostas

Zeed01

Boa tarde galera !

Acho que não entendi direito a sua dúvida.
Vamos ver se é isso:

Você tem 2 clientes na sua tabela:
Id = 1
Nome = Jose

Id = 2
Nome = Joao

Você apagou o registro com Id = 1 e Nome = Jose.

Você esperava que o registro com Id = 2 passasse a ter Id = 1 ?

OU

Você tem só um cliente na sua tabela:
Id = 1
Nome = Jose

Você apagou este registro.
Você esperava que quando incluisse um novo registros ele tivesse Id = 1 ?

Qual banco de dados você esta usando ?
Até onde sei, nos dois casos o Id = 1 não será reaproveitado, seja atualizando registros já existentes, seja para um novo registro.

Imagine que você tivesse uma tabela com 1 milhão de registros (e em alguns sistemas isso é pouco registro), para cada cliente que você apagar todos os Id com valor maior que o apagado teriam que ser atualizados !
Para piorar e se esse campo Id for usado como foreing key de outra tabela ?? Teria que atualizar toda a cadeia ??

Bom… se não for isso por favor explique melhor.

Obrigado.

Um abraço,

Edmilson.

gilmaslima

Como está mapeada a sua entidade?
Se tiver como auto-increment vai ser sempre incrementado o numero do id, se for sequence vai ser sempre o nextval da sequence.

Quando vc faz um delete ele deve eliminar a linha inteira referente ao id da tabela, e no insert é uma nova linha e um novo id.

flw!

ArthurTurtle

Boa tarde Edmilson
primeiramente obrigado pela resposta.
Então é mais uma duvida mesmo.

Oque eu queria saber era isso mesmo, se quando eu deleto um registro o Id dele fica la, e nunca mais sera usado.
So uma duvida mesmo :slight_smile:

Eu to usando o MySql

khaoz

Se seu id é autoincremento, ao excluir o cliente do Id 1 o próximo será 2.

Até é possível fazer isso de reutilizar os id’s só não sei se vale a pena (ou se faz sentido).

[]'s

ArthurTurtle

Agora que eu parei pra pensar relamente não vale a pena a reutilização de ID’s pois se um banco tiver varios registros caso um seja deltado todos irão mudar prejudicando assim quem usa o sistema neh…
ou seja o proximo id sempreeee sera o Id anterior mais um e nunca o Id menor.
Bom valeu a todos aee que responderam, uma otima tarde aee…

Criado 31 de março de 2011
Ultima resposta 31 de mar. de 2011
Respostas 5
Participantes 4