Pegar o id da insercao que eu fiz

8 respostas
Basilio

Galera eu gostaria de saber se existe uma forma de na hora que eu inserir um dado numa tabela eu ja recuperar o id q foi gerado. Nao posso utilizar o IDENTITY() pois o meu aplicativo esta usando threads, entao poderia acontecer de a ultima insercao nao ser a que eu quero.

VLW

8 Respostas

andreiribas

Se você está usando hibernate, quando você chama o métododo save ou persist ele te retorna o id do objeto.

Basilio

e sem hibernate, tem como?

alanbrasil1984

tu usa qual tecnologia par persistencia?

Basilio

PreparedStatement

erico_kl

você provavelmente vai inserir um objeto… então no método que você o insere no banco faça retornar o próprio objeto atualizado…

jgbt

De uma olhada no metodo PreparedStatement.getGeneratedKeys() que deve te ajudar.
Claro, desde que seu driver JDBC tenha implementado e corretamente.

[]´s

Basilio

Esse PreparedStatement.getGeneratedKeys() me parece funcionar, agora resta saber se no caso da thread ser “quebrada” entre o executeUpdate() e o getGeneratedKeys() e for feita outra insercao o getGeneratedKeys() vai retornar o valor que eu quero ou o da ultima insercao feita.

herbertpimentel

após realizar a operação de insert ainda na mesma sessão você pode usar um select para recuperar os valores inseridos na chave:

mySQL "SELECT LAST_INSERT_ID() AS ID;"
Postgre "SELECT currval('nome_da_sequence') AS ID;"
SqlServer "SELECT @@IDENTITY AS ID;"
...
Criado 19 de janeiro de 2010
Ultima resposta 19 de fev. de 2010
Respostas 8
Participantes 6