Como saber o prox id do banco

5 respostas
T

ola
estou usando o mysql e o hibernate… e estou querendo pegar o prox codigo/id do do banco, sendo auto incremento do tipo sequencial, ex:

antes de inserir algo na tabela eu uso o id que vai ser usado para mostrar na tela

se alguem souber como me ajudar… usando o HQL ou SQL …

vlw

5 Respostas

K

Se voce fizer um select usando a função max, e passar como parametro o nome do seu atributo que é uma PK, irá te retornar o maior valor de PK daquela tabela.

Ex:
SELECT MAX( COD ) FROM PRODUTO

Uma outra forma, é fazer um select na tabela HIBERNATE_SEQUENCES. Nesta tabela há dois atributos, uma com o nome da tabela que ele é usado, e outro com o proximo valor que será usado numa PK em determinada tabela.
Mas você pode não ter essa tabela no banco, pois isso depende da estrátégia que voce usa para gerenciar o valor das PKs.

Obs. essa função max pode não ser suportada por todos os bancos de dados. Mas os que não a suporta, devem possuir uma função equivalente.

Espero ter lhe ajudado tiago.

L

Como vc esta salvando os registros?! essas coisas você configura no próprio mapeamento da entidade, dizendo que o id dela ira ser gerado de forma automática, justamente para não precisar fazer esse tipo de coisa no código.
Com isso é só dar um save (hibernate) ou persist (jpa) que o hibernate se encarrega de fazer isso para vc.

K

luBS, ele pode estar usando isso apenas como um recurso visual. Dependendo da concorrência que há no sistema dele, não há problema algum.

T

estou usando mais como recurso visual msm como o kopcheski disse…

estou tabalhando com jpa, para salvar uso o codigo “0”, dae ele gera automaticamente o id

vlw

L

Agora que vi o “id que sera mostrado na tela”

mas vc naum acha meio estranho isso?! mostrar o id que o registro sera cadastrado na tela?! pode ocorrer erros de concorrencia como o kopcheski disse e também id não seria bem uma informação de negócio que valeria o usuario saber… na real eu sou da ideia que id o usuário não deveria nem saber que existe id’s

mas blz, não sei como é seu sistema e os padrões de tela, ai vc faz o que o kopcheski disse, mesmo assim ainda acho estranho :wink:

Criado 8 de novembro de 2007
Ultima resposta 8 de nov. de 2007
Respostas 5
Participantes 3