| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 14:33:15
|
plentz
Moderador
![[Avatar]](/images/avatar/73f490f3f868edbcd80b5d3f7cedc403.png)
Membro desde: 28/01/2004 07:34:12
Mensagens: 1584
Localização: Porto Alegre, RS
Offline
|
Buenas pessoal, dei uma procurada na documentação do Hibernate(e também nas docs do Hibernate Annotations) e não achei nada relacionado ao mapeamento de geradores de PK anormais. Explicando: a classe que preciso mapear tem sua PK gerada através de uma procedure do banco(cadê aquele smile com ânsia de vômito?). Como eu poderia fazer esse mapeamento sem ter que fazer uma grande, gorda e feia gambiarra?
Notas: a procedure (que está num banco INGRES - a boa notícia é que o Hibernate vem com dialect bem atualizadinho pra ele já), que consulta uma tabela de parâmetros, onde cada linha possui um registro que contém o valor da pk. Então sim, a procedure consulta o valor, guarda numa variável, faz update pra n+1, e commita. *altamente* escalável.
|
Diego Plentz - Twitter
"Provide options, don't make lame excuses." |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 15:37:30
|
Daniel Quirino Oliveira
Moderador
![[Avatar]](/images/avatar/846c260d715e5b854ffad5f70a516c88.png)
Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline
|
Ouch! Que coisa mais incomum. Enfim, tente estas duas estratégias:
tente usar @GeneratedValue(strategy=GenerationType.SEQUENCE ...)
ou então, tente usar as Hibernate Annotation Extensions, usando o "select" como gerador (aliás, tentaria esta última estratégia primeiro).
|
Daniel Quirino Oliveira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 15:57:36
|
Lucashgt
Virtual Machine Man
Membro desde: 20/06/2003 20:25:41
Mensagens: 511
Localização: BR
Offline
|
O que pode ser feito também é gerar um próprio Generator.
|
Lucas H. G. Toniazzo
Vraptor
blog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 16:09:10
|
Daniel Quirino Oliveira
Moderador
![[Avatar]](/images/avatar/846c260d715e5b854ffad5f70a516c88.png)
Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline
|
Lucashgt wrote:O que pode ser feito também é gerar um próprio Generator.
Sim, mas em último caso (no caso de desespero, por exemplo).
|
Daniel Quirino Oliveira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 17:26:12
|
Daniel Quirino Oliveira
Moderador
![[Avatar]](/images/avatar/846c260d715e5b854ffad5f70a516c88.png)
Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline
|
plentz wrote:Buenas pessoal, dei uma procurada na documentação do Hibernate(e também nas docs do Hibernate Annotations) e não achei nada relacionado ao mapeamento de geradores de PK anormais. Explicando: a classe que preciso mapear tem sua PK gerada através de uma procedure do banco(cadê aquele smile com ânsia de vômito?). Como eu poderia fazer esse mapeamento sem ter que fazer uma grande, gorda e feia gambiarra?
Ahhh!! Ignore a primeira estratégia! Tente usar o generator "assigned" (usando as Hibernate Annotations Extensions): http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#mapping-declaration-id
|
Daniel Quirino Oliveira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 18:17:01
|
plentz
Moderador
![[Avatar]](/images/avatar/73f490f3f868edbcd80b5d3f7cedc403.png)
Membro desde: 28/01/2004 07:34:12
Mensagens: 1584
Localização: Porto Alegre, RS
Offline
|
Boa Daniel. Por sinal, é o mapeamento default,hehe.
** diego procura serra elétrica para brincar com ser que teve a brilhante idéia de criar uma procedure que atualiza uma sequence em uma tabela(!!) e devolve o valor.
|
Diego Plentz - Twitter
"Provide options, don't make lame excuses." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2006 06:29:50
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Caramba
Quando agente acha que já viu de tudo, sempre tem coisa pior, pra quê o cara tá atualizando uma sequence no braço....
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/07/2006 22:27:22
|
plentz
Moderador
![[Avatar]](/images/avatar/73f490f3f868edbcd80b5d3f7cedc403.png)
Membro desde: 28/01/2004 07:34:12
Mensagens: 1584
Localização: Porto Alegre, RS
Offline
|
Maurício Linhares wrote:Caramba
Quando agente acha que já viu de tudo, sempre tem coisa pior, pra quê o cara tá atualizando uma sequence no braço....
Não duvide nunca da capacidade de uma ameba no cargo de programador
|
Diego Plentz - Twitter
"Provide options, don't make lame excuses." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/07/2006 22:43:14
|
plentz
Moderador
![[Avatar]](/images/avatar/73f490f3f868edbcd80b5d3f7cedc403.png)
Membro desde: 28/01/2004 07:34:12
Mensagens: 1584
Localização: Porto Alegre, RS
Offline
|
Buenas, problema solucionado. Após pesquisar pelas alternativas (que não eram muitas, por sinal), chegamos em duas que seriam as mais "coerentes":
- Seguindo a linha de raciocínio que o Quirino sugeriu (de permitir que a aplicação controlasse a pk), seria um pouco (ok, seria uma enorme gambiarra feia e fedida), pois teriamos que criar um singleton da vida e fazer referência sempre. Maior trabalho pros desenvolvedores, resumindo, no way.
- A segunda, que foi a adotada. Criamos (eu+Cuozzo+Lucas que agora trabalha comigo ) um gerador próprio que implementa IdentifierGenerator. Não ficou a coisa mais linda do mundo, mas ficou decente. A implementação da classe ficou algo próximo disto:
E um exemplo de como ficou a utilização:
|
Diego Plentz - Twitter
"Provide options, don't make lame excuses." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/07/2006 23:18:56
|
brlima
Moderador
![[Avatar]](/images/avatar/fc2c7c47b918d0c2d792a719dfb602ef.png)
Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline
|
Não é por nada não, mas isso e bem comum dos lugares que eu venho...rsss.. apesar de ser coisa do outro mundo e feio, nao sei pq tem gente que adora fazer isso... mas....
|
Bruno R. Lima
-------------------------------------------
flickr :: twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/08/2006 10:48:52
|
vskuroda
Thread.start()
![[Avatar]](/images/avatar/812649f8ed0e2e1d911298ec67ed9e61.jpg)
Membro desde: 02/06/2006 09:35:23
Mensagens: 28
Localização: Maringá
Offline
|
Opa.. caros colegas.
Descupe, por acaso há um modo mais simples de se colocar um Auto Incremento na minha PK, pois quando realizado um cadastro não consigo gerar. Estou usando Hibernate + Annotations + JSF
Atenciosamente Valter
|
|
|
 |
|
|