Auto incremento hibernate  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
maurenginaldo
JavaEvangelist
[Avatar]

Membro desde: 26/04/2006 18:16:41
Mensagens: 435
Localização: Belo Horizonte-MG
Offline

Oi pessoal,

estou desenvolvendo uma aplicação utilizando o hibernate que vai utilizar dois SGBD's: PostgreSQL e SQLServer.
Baseado nisso, estou fazendo um mapeamento padrão que funcione nos dois bancos, pois até onde eu sei as
anotações do hibernate não é '100%' iguais para todos SGBD's.

Estou com um problema no auto-incremento:

No postgreSQL tenho que criar senquencia, como exemplo:


No SQLServer faço dessa maneira:



Alguém sabe uma anotação padrão que vai funcionar nos dois SGBD's?

Esse foi o primeiro problema que encontrei, espero que não venham outros, eheheh...

Obrigado a todos!


Mauren Ginaldo Souza
______________________________________________________________
"Quis Custodie Ipsos Custodes." Quem guardará os guardiões.
[Email] [WWW] [MSN]
vegetasw
Entusiasta Java
[Avatar]

Membro desde: 27/03/2007 13:02:51
Mensagens: 23
Localização: Franco da Rocha - SP
Offline

Olha, com anotação eu não sei se tem um mapeamento padrão para auto incremento.
Utilizo o mapeamento com o arquivo XML e não tem mapeamento padrão, cada SGBD tem um tipo de mapeamento diferente. Na empresa que trabalho, utiliza-ze o Informix e Oracle e quando me deparei com essa situação, tive que criar dois arquivos XML, cada contendo o mapeamento de cada banco e uma classe Java, porque no final das contas é um numérico, que no meu caso era um Integer.

Nenhuma mulher resiste a uma boa cantada, principalmente a dos pneus!
[MSN]
maurenginaldo
JavaEvangelist
[Avatar]

Membro desde: 26/04/2006 18:16:41
Mensagens: 435
Localização: Belo Horizonte-MG
Offline

Pois é, mas no meu caso as anotações estão diretamente nas classes.

Continuando as pesquisas...

Mauren Ginaldo Souza
______________________________________________________________
"Quis Custodie Ipsos Custodes." Quem guardará os guardiões.
[Email] [WWW] [MSN]
maurenginaldo
JavaEvangelist
[Avatar]

Membro desde: 26/04/2006 18:16:41
Mensagens: 435
Localização: Belo Horizonte-MG
Offline

Li em algumas referências que alguns bancos como o PostgreSQL trabalha com SEQUENCE e outros bancos como SQL Server trabalha com IDENTITY.
E existe uma forma que seria mista, que é a estratégia de INCREMENT, pelo que percebi ela faz uma consulta no banco pega o max da chave primária e soma 1 automaticamente.
Porém não consegui funcionar esse INCREMENT, alguem sabe a respeito ou tem outra idéia para meu problema?

Obrigado.

Mauren Ginaldo Souza
______________________________________________________________
"Quis Custodie Ipsos Custodes." Quem guardará os guardiões.
[Email] [WWW] [MSN]
maurenginaldo
JavaEvangelist
[Avatar]

Membro desde: 26/04/2006 18:16:41
Mensagens: 435
Localização: Belo Horizonte-MG
Offline

Vi alguns exemplos que no xml o pessoal mapeia assim:



Ai, o hibernate pega o modo nativo de cada banco.

Como faço isso através de anotações???

Mauren Ginaldo Souza
______________________________________________________________
"Quis Custodie Ipsos Custodes." Quem guardará os guardiões.
[Email] [WWW] [MSN]
rodrigo_corinthians
JavaEvangelist
[Avatar]
Membro desde: 07/06/2005 12:01:01
Mensagens: 316
Offline

Tenta GenerationType.AUTO mas eu acho que o Hibernate não tem como saber qual sequence pra tabela...
rodrigo_corinthians
JavaEvangelist
[Avatar]
Membro desde: 07/06/2005 12:01:01
Mensagens: 316
Offline

Ahh se não me engano você precisa criar uma sequence chamada hibernate_sequence.
maurenginaldo
JavaEvangelist
[Avatar]

Membro desde: 26/04/2006 18:16:41
Mensagens: 435
Localização: Belo Horizonte-MG
Offline

Pois é Rodrigo,

já tentei com o mas não deu certo.

Mais alguma idéia???

Mauren Ginaldo Souza
______________________________________________________________
"Quis Custodie Ipsos Custodes." Quem guardará os guardiões.
[Email] [WWW] [MSN]
java++
JavaTeenager

Membro desde: 10/04/2006 16:46:13
Mensagens: 150
Localização: Fortaleza
Offline

Olá Maurenginaldo,

Eu usei jpa+hibernate e usei @TableGenerator para gerar o valor da chave primaria das tabelas.

Como está anotação você cria uma table que é responsável pela a geração da chave. O único incoveniente

é o fato de ter mais uma tabela em seu banco para controlar isso. Porém, você não se preocupar com

o SGBD e fica sendo controlado por você essa geração de IDs.

Examplo:



Att,

"O pior cego é aquele que não quer aprender braile"
maurenginaldo
JavaEvangelist
[Avatar]

Membro desde: 26/04/2006 18:16:41
Mensagens: 435
Localização: Belo Horizonte-MG
Offline

Oi Mirla,

testei da forma que vc descreveu e deu certinho!!!
Muito obrigado pela ajuda.

Abracos,

Mauren Ginaldo Souza
______________________________________________________________
"Quis Custodie Ipsos Custodes." Quem guardará os guardiões.
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team