Reuperar o ID gerado pelo Banco

3 respostas
wagne23

Boa tarde, estou desenvolvendo um sistema de cadastro de alunos em uma escola. Eu quero que ele ao savar um novo aluno gere um numero de matricula que é o ano atual + ID do banco, por exemplo. É um sistema web, estou usando jsp, struts 2, hibernate/JPA, spring, mysql e mais algumas coisas. O que e fiz até agora foi salvar o auno e na mesma action do struts fazer uma busca no banco pelo cpf cadastrado e recuperar o ultimo auno salvo, ai verifico qual o id que o banco gerou e faço a concatenaçõ com o ano e faço um update no registro salvando assim o valor da matricula. Mas imagino que talvez tenha uma forma mais facil de se fazer isso, para evitar que haja duas transações na mesma action. Tipo verificar ja antes de salvar qual vai ser o proximo id a ser gerado pelo banco, ou algo parecido. Alguem tem alguma ideia?

Wagner Soares

3 Respostas

Rafael_Nunes

Ah não ser que você tenha um driver muito antigo, mas qualquer driver que suporte JDBC 3.0 você pode usar o getGeneratedKeys:

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html#getGeneratedKeys()

castiel

Vc pode selecionar no banco o proximo codigo:
select max(id_aluno)+1 from aluno;,
agora tu tem que ficar esperto, pq se vc for gerar esse codigo hora que vc clica no “cadastrar novo aluno”(exemplo)
é mais facil vc ter um erro pk duplicada, do que se gerar ele no final(gravar aluno)!
espero ter ajudado

filipenf

No hibernate nao deveria nem ser necessario fazer nada pra buscar a chave gerada. Se nao vier automaticamente vc pode dar um refresh no objeto

Criado 29 de junho de 2009
Ultima resposta 29 de jun. de 2009
Respostas 3
Participantes 4