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