Como implementar auto increment com escopo?

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.