Pegar o id da insercao que eu fiz

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

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

e sem hibernate, tem como?

tu usa qual tecnologia par persistencia?

PreparedStatement

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…

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

[]´s

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.

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;"
...