JPA + GeneratedValue

3 respostas
Guilherme_Gomes

Bom dia a todos,

Estou com a seguinte duvida utilizando JPA: uma das minhas entidades tem sua primary key setada como @Id@GeneratedValue, para pegar o auto_incremento do banco de dados. Isso está certo e funcionando bem. Porém, existem casos que eu preciso forçar o valor da primary key (assigned) quando for inserir ela no banco de dados, mas sempre que tento isso, o banco gera uma nova primary key para este registro.

Exemplo:
Pessoa [Id: 1, Nome: Guilherme Gomes] - inserção no banco de dados
Pessoa [Id: 1, Nome: Guilherme Gomes] - remoção do banco de dados
Pessoa [Id: 1, Nome: Guilherme Gomes] - recuperação do registro e inserção dele no banco de dados com o mesmo ID da primeira vez (tenho esse ID guardado).

Desde ja, Obrigado.

3 Respostas

Jair_Rillo_Junior

A partir do momento que você seta no banco de dados que a primary key será auto_increment, você não pode atribuir um valor para ela. Uma solução seria a sua aplicação controlar o auto_incremento, porém, fique atento com concorrência.

otavio

Remova o @GeneratedValue caso você queria que seja manual assign. É necessário tbm atualizar a definição no banco de dados dessa coluna para “não autoincrement”.

Grinvon

Como Jair falou, você só poderá escolher uma opção, pois não é apenas uma questão de java hibernate, mas também de banco.

Em um dos nossos projetos tivemos problema semelhante, então essas entidades foram setadas com valor gerador automaticamente por nós, dessa forma o banco cria a primary key mas nao seta lógica de incremento (auto increment, sequence, generater, etc.)

Criado 17 de fevereiro de 2009
Ultima resposta 18 de fev. de 2009
Respostas 3
Participantes 4