Gerando numeração automática para chave composta

Olá,

Estou tentando criar uma classe que seria a nota fiscal da Aplicação, usando hibernate para persistir.
O problema está na chave, que para uma nota fiscal dever ser pelo menos a SÉRIE + NÚMERO.
Estou usando anotações para criar minhas Entities e gostaria de saber como posso implementar esta chave na classe de forma que o sistema gere da seguinte forma:

SERIE NÚMERO
001 1
001 2
001 3

002 1
002 2
002 3

Ninguém respondeu…

Eu encontrei este link: http://www.guj.com.br/java/143595-hibernate---chave-primaria-composta-gerar-id-autoincremento

Ele é de 2009.
A resposta ainda continua a mesma?

a principio essa esse tipo de incremento com chave composta nao funciona pq so é possivel manter uma sequencia unica… no caso ali vc teria duas sequencias diferentes… e nao teria como o sistema controlar isso em um mesmo campo. ( pelo menos ate onde meu conhecimento vai nao…)… porem se tratando de nota fiscal creio que a sua serie e numero podem ser pensadas de uma outra maneira…

vc esta fazendo a integracao do sistema com nf-e certo?

o interessante seria ter um campo … id_nf como chave primaria auto increment… e outros dois campos sendo SERIE e NUMERO… no caso eu chamaria NUMERO como sequencial e funcionaria mais ou menos assim…

pode existir uma nf criada no seu sistema… porem nao foi homologada ainda … e o ideal seria gerar o sequencial dela no momento da homologaçao… para garantir que nao ocorra problemas do tipo … emitir um sequencial maior e depois um sequencial retroativo… isso de certa forma pode trazer problemas…

nao sei exatamente qual sua necessidade… espero nao ter piorado a situacao rsrs

Acho que entendi que terei uma chave primaria ID e os campos SÉRIE E NÚMERO.

Eu estarei gerando o número no momento do envio desta nota fiscal para receita ou no momento da impressao em formulário (este caso acredito nem ser utilizado mais).

Para fazer este auto-incremento no NÚMERO eu estaria fazendo um comando para buscar o último número e somar mais um exatamente no momento de envio entao…

O auto-incremento seria da forma que coloquei acima? Usando um HQL para buscar a numeração…

nao entendi exatamente o que vc quer dizer… a principio vc queria fazer uma chave com SERIE e NUMERO e fazer essa chave auto incremente de forma q cada serie tenha uma sequencia de NUMERO… porem automaticamente nao funciona assim… entao vc tem que fazer esse controle manualmente… por exemplo

seria mais ou menos assim

id serie numero
1 1 1
2 1 2
3 2 1
4 2 2
5 1 3

… vc pode criar a nota fiscal no banco de dados… porem nao emiti - la … dessa forma ela estaria assim no seu banco…

id serie numero
1 0 0

(obs caso vc ja tenha a serie pode colocar no banco tb msm q nao seja emitido… tendo em vista que a serie de uma empresa eh sempre a mesma ate que mude a forma de emissao de nota fiscal… ou seja cada forma de emitir nf q a empresa utilizou desde os blocos de notas ate nf-e eh uma serie… entao se a empresa nunca emitiu nf e vai iniciar ja na nf-e a serie dela eh 0 )

depois de o usuario incluir todos os itens e fazer o que tem que ser feito
ele vai emitir a nf
entao nesse momento
vc verifica o sequencial da empresa… qual foi o numero da ultima nota emitida por essa empresa… e entao faz o ultimo numero + 1

e sua nota ficaria assim por exemplo…

id serie numero
350 1 350

entao resumindo … id vai ser auto incremente… e eh a chave primaria a serie depende da empresa… e o numero da nota vc gera somente na hora que emitir… com o ultimo numero emitido + 1 certo… abrass

Obrigado, agora eu ja sei o que deve ser feito.