JPA - AUTO INCREMENT  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
els1234
Thread.start()

Membro desde: 23/07/2010 14:22:19
Mensagens: 38
Offline

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....
nextuser
JavaEvangelist
[Avatar]

Membro desde: 15/12/2008 11:21:08
Mensagens: 400
Localização: São Paulo, Brazil
Offline

o jeito é vc criar um controle externo... pode fazer com uma sequence e então usa @SequenceGenerator

assim o controle fica na sequence e o jpa pega da sequence para usar

Hudson Afonso
Consultor
http://penseinteligente.com.br/

Pense Inteligente:
A Inteligente é uma consultoria em tecnologia da informação, que atua na comercialização e implementação de produtos de software corporativos. Com foco no cliente, compreendemos a necessidade de nossos clientes e adicionamos valor para a condução de seus negócios.
Focus:
SPED, Saneamento de Cadastro, Saneamento de Dados, Cadastro de Clientes e Fornecedores, Cadastro da Receita Federal, CNPJ, CPF, Cadastro, Correção de Cadastro para o SPED, Exigências legais para o SPED, Cadastro CNPJ, Certidão CNPJ, Comprovante CPF, Consulta CPF, Consulta Serasa, Consulta SPC, Nota Fiscal Eletrônica, SPED Contábil, SPED Fiscal
[Email] [WWW]
els1234
Thread.start()

Membro desde: 23/07/2010 14:22:19
Mensagens: 38
Offline

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
leomello
Entusiasta Java

Membro desde: 13/01/2010 14:31:04
Mensagens: 19
Offline

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;

tenta esse carinha @GeneratedValue(strategy = GenerationType.IDENTITY)
nextuser
JavaEvangelist
[Avatar]

Membro desde: 15/12/2008 11:21:08
Mensagens: 400
Localização: São Paulo, Brazil
Offline

eu não falei para vc criar nenhuma tabela...

se vc quer dizer que não pode criar nada no banco... nada mesmo... bom ai não posso te ajudar.

Hudson Afonso
Consultor
http://penseinteligente.com.br/

Pense Inteligente:
A Inteligente é uma consultoria em tecnologia da informação, que atua na comercialização e implementação de produtos de software corporativos. Com foco no cliente, compreendemos a necessidade de nossos clientes e adicionamos valor para a condução de seus negócios.
Focus:
SPED, Saneamento de Cadastro, Saneamento de Dados, Cadastro de Clientes e Fornecedores, Cadastro da Receita Federal, CNPJ, CPF, Cadastro, Correção de Cadastro para o SPED, Exigências legais para o SPED, Cadastro CNPJ, Certidão CNPJ, Comprovante CPF, Consulta CPF, Consulta Serasa, Consulta SPC, Nota Fiscal Eletrônica, SPED Contábil, SPED Fiscal
[Email] [WWW]
els1234
Thread.start()

Membro desde: 23/07/2010 14:22:19
Mensagens: 38
Offline

@nextuser
nem fala kra... num entendo isso...

@leomello
vou tentar
aeciovc
Java Ninja

Membro desde: 28/02/2008 21:15:34
Mensagens: 267
Localização: Recife
Offline

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???


ai a JPA num pode fazer nada.

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:

o jeito é vc criar um controle externo...


ou ainda fazer o que o colega citou uma Sequence.

Aécio Costa
www.aeciocosta.com.br
[WWW] [MSN]
Z
JavaGuru
[Avatar]

Membro desde: 05/08/2008 14:28:02
Mensagens: 227
Localização: Brasília
Offline

POG solution:

Consulta pelo maior valor da PK e atribui valor+1 ao seu novo objeto.


----------------- Z -----------------
Senhor dai-me força para compilar o que pode ser compilado, paciência para debugar o que está bugado e sabedoria para encontrar um culpado.
leomello
Entusiasta Java

Membro desde: 13/01/2010 14:31:04
Mensagens: 19
Offline

Z wrote:POG solution:

Consulta pelo maior valor da PK e atribui valor+1 ao seu novo objeto.



isso pode ser um problema, deve cuidar com a concorrencia ao levar em conta varias consultas simultaneas....
osmio
Java Ninja

Membro desde: 22/08/2006 20:27:54
Mensagens: 252
Offline

els1234 wrote: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....


Se estiver usando hibernate, pode fazer isso:



Na prática, o que o Hibernate vai fazer é um e acrescentar mais um.
Porém, como o amigo acima disse, é preciso controlar a concorrência entre as solicitações.

"O pensamento lógico pode levar você de A a B, mas a imaginação te leva a qualquer parte do universo."
- Einstein, Albert
[Email]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team