Sequenciador de codigo

7 respostas
vinnymesquita

Pessoal gostaria de saber se alguem ja fez um mapeamento (Annotation) da seguinte maneira.

id |codigo |licenca| nmFornecedor |
1 | 1 | 1 | Tal 1 |
2 | 2 | 1 | Tal 2 |
3 | 3 | 1 | Tal 3 |
4 | 4 | 1 | Tal 4 |
5 | 1 | 2 | Tal 5 | <— Note a licenca de uso muda
6 | 2 | 2 | Tal 6 |
7 | 3 | 2 | Tal 7 |
8 | 4 | 2 | Tal 8 |
9 | 5 | 2 | Tal 9 |

Por exemplo o ID sequenciando normalmente mas o CODIGO que o usuario vê sequencia conforme a LICENÇA de uso.
Alguém ja fez algum classe com este conceito? Não queria fazer isto com consultas no banco.

Valeu.

7 Respostas

Hebert_Coelho

Se você não fizer consultas no banco, como você vai saber em qual código está?

vinnymesquita

Pois é… to pensando em fazer com um select MAX passando como parametro a licenca.
Mas ainda assim vou pesquisar mais um pouco pq eu tenho quase certeza que isso é possivel através dos indices, só não queria trabalhar com chave composta.
Só lembrando que esse campo licenca é chave estrangeira licencaFK.

Hebert_Coelho

vinnymesquita:
Pois é… to pensando em fazer com um select MAX passando como parametro a licenca.
Mas ainda assim vou pesquisar mais um pouco pq eu tenho quase certeza que isso é possivel através dos indices, só não queria trabalhar com chave composta.
Só lembrando que esse campo licenca é chave estrangeira licencaFK.
Se teu banco vai aguentar um select max a cada registro inserido, beleza. Larga o dedo.
Eu ainda fico com a chave composta. [=

O que importa é funcionar.

vinnymesquita

Se crescer muito e criar lentidão futuramente melhoro.
Não gosto disso mas as vezes que tentei implementar chave composta só passei raiva e a maioria do pessoal fala que não vale a pena e nem funciona.

Valeu. Abraços!

Hebert_Coelho

vinnymesquita:
Se crescer muito e criar lentidão futuramente melhoro.
Não gosto disso mas as vezes que tentei implementar chave composta só passei raiva e a maioria do pessoal fala que não vale a pena e nem funciona.

Valeu. Abraços!

Bem, funcionar funciona. Só não funciona quando não existe um bom conhecimento em JPA e como funciona a chave composta.

Eu já criei diversos tipos mesmo com muito problemas.

Concordo que é complexo, só não concordo com o fato de falarem que não funciona. [=

M

Se você tiver um índice por licença e código o desempenho vai ficar bom.
A não ser que seu sistema tenha muita concorrência e inserts simultâneos.
Você pode resolver com um comando de SQL:

insert tabela1 (licenca, codigo, fornecedor) values (var_licenca, (select max(codigo)+1 from tabela1 where licenca=var_licenca), var_fornecdor)Nunca implementei essa solução com JPA e Hibernate.

vinnymesquita

Bom dia galera.
Estou voltando a este topico pq dessa vez eu vou fazer esse trem funcionar.
Estou com um novo projeto que quero que funcione desta forma.
Alguem poderia me ajudar?

Criado 3 de outubro de 2012
Ultima resposta 14 de jan. de 2013
Respostas 7
Participantes 3