| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/12/2007 16:30:59
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
Olhei um pouco na net sobre isso, inclusive claro aqui no forum, mais n satisfeito com "quebra galho", estou postando minha soluçao!
Consideraçoes:
- Estou usando Firebird em modo SuperServer versao 2.0.3 (winXP).
- JDK 6.0 update 3.
- Hibernate Annotations.
CLASSE HIBERNATE_ UTIL:
=============================================================================
Sabemos que no Firebird para criar um campo AUTOINCREMENT é preciso criar um GENERATOR para o ID (que é pra ser automatico o incremento)
e uma trigger para executá-lo toda vez que algo for inserido no DB.
No caso de usar o Hibernate, não é preciso criar a trigger, pq ele vai fazer essa computação de incrementar o GENERATOR.
Agora a parte do código em questao (a do auto increment) na minha classe mapeada:
E agora, por fim a classe ClienteDAO, que é minha interface de controle entre Obj Cliente e tabela Cliente do DB.
Ainda em construçao a classe, mais o que interessa ja está pronto. Que é o rollback do generator caso aconteça um erro ao Salvar um novo registro no DB. Foi necessario a criaçao desse rollBackID porque, quando na tentativa de salvar um novo obj no DB, a primeira coisa a ser calculado é o campo de "auto increment", a segunda é realiar a persistencia. Se ocorrer erro na persistencia, ele n volta o GENERATPOR (rollBack do calculo do Generator para o proximo valor). Isso causa furos no sequenciamento do ID.
Caso aconteça algum Excepiton no método salve() no seu código, utilize o método rollBak() que está na classe abaixo .
qualquer dúvida, estamos ai!
This message was edited 1 time. Last update was at 14/02/2012 10:46:36
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/02/2012 07:47:25
|
targas
Thread.start()
![[Avatar]](/images/avatar/a177c77a9c4750751f56f22eeb302021.png)
Membro desde: 11/04/2010 21:58:35
Mensagens: 27
Localização: Recife-PE
Offline
|
NO meu caso, tenho um sistema multi empresas, desta forma a chave é gerada num trigger sem generator conforme abaixo:
CREATE OR ALTER TRIGGER TBA_MOEDAS_BI0 FOR TBA_MOEDAS
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE WID INTEGER;
BEGIN
SELECT MAX(ID) FROM TBA_MOEDAS
WHERE CLIENTE_SISTEMA_ID = NEW.CLIENTE_SISTEMA_ID
INTO WID;
IF (WID IS NULL) THEN
BEGIN
WID = 0;
END
NEW.ID = WID + 1;
END
Como devo fazer as anotações neste caso?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/02/2012 09:04:55
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
Neste caso acho que não precisará de definir as anotações referentes ao generator...
já deve resolver...
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/02/2012 10:45:14
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Por favor, ao postar tópicos, não deixe os títulos apenas com letras maiúsculas.
Para conhecer outras regras de netiquetas envolvendo fóruns, leia:
http://www.istf.com.br/perguntas/
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/02/2012 12:25:14
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
ViniGodoy wrote:Por favor, ao postar tópicos, não deixe os títulos apenas com letras maiúsculas.
Para conhecer outras regras de netiquetas envolvendo fóruns, leia:
http://www.istf.com.br/perguntas/
Não fui eu quem colocou o título como UPPERCASE.. alias, agora que reparei isso... porém o título do tópico está normal.
Já aparece assim quando clicamos em responder!!!!
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/02/2012 12:27:18
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
O título do tópico está normal agora porque eu corrigi. Mas ele foi aberto em uppercase, por isso o aviso.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|