Considerando o seguinte requisito: um usuário pode ter muitos pedidos, e cada pedido possui um número incremental com o escopo de cada usuário, exemplo:
order_number user_id
1 1
2 1
1 2
De que forma isto poderia ser implementado? Especificamente em JPA? A solução que encontrei é apenas no lado do banco, pois não gostaria de criar entities e repositories para contadores, já que são detalhes de implementação.
A solução que escolhi no momento é esta: possuo uma tabela order_sequence
que referencia user
e possui uma coluna counter
, com isto tenha uma function
que insere/atualiza order_sequence
e retorna o próximo número do pedido, no final uso um trigger
para quando order
for inserido no banco, gerar o order.number
.
Outra solução que encontrei seria usar algo como SELECT MAX(order_number)...
, mas isto iria repetir os números de pedidos deletados.
PS: order_number
não é uma primary key.