galera, estou atuando num projeto que utiliza jpa…
temos uma tabela que possui uma pk que não eh auto-increment. Porém eu necessito que ela seja auto-increment, como eu faço para o jpa fazer auto_increment sem mudar a tabela no banco de dados???
tipo assim:
minha tabela não tem auto increment,
porém eu faço alguma coisa para que seja gerado um codigo automaticamente na hora de inserir…
eis a questão… eu não posso criar nenhuma tabela, nem alterar as já existentes…
atualmente eu estou consultando o ultimo registro e alocando à variavel… + pode ocorrer de 2 resgistros serem inclusão ao mesmo tempo … ai já viu neh… duplicate entry
se vc não pode alterar o campo para auto increment deve ser porque já tem dados lá. agora se vc não pode fazer isso, porque simplesmente disseram que não podia, peça argumentos válidos.
faça testes antes de uma alteração como essa.
agora… uma maneira que existe é uma POG pra esse caso específico:
[quote=els1234]galera, estou atuando num projeto que utiliza jpa…
temos uma tabela que possui uma pk que não eh auto-increment. Porém eu necessito que ela seja auto-increment, como eu faço para o jpa fazer auto_increment sem mudar a tabela no banco de dados???
tipo assim:
minha tabela não tem auto increment,
porém eu faço alguma coisa para que seja gerado um codigo automaticamente na hora de inserir…[/quote]
Se estiver usando hibernate, pode fazer isso:
@Id
@GenericGenerator(name="nome_interno_do_gerador_de_id", strategy="org.hibernate.id.IncrementGenerator")
@GeneratedValue(generator="nome_interno_do_gerador_de_id")
@Column(name="nome_campo_id")
private int id;
Na prática, o que o Hibernate vai fazer é um select max(id) from tabela e acrescentar mais um.
Porém, como o amigo acima disse, é preciso controlar a concorrência entre as solicitações.