Uso de sequence para geração de número sequencial

Bom dia pessoal, eu tenho aqui uma tabela de movimentação de produtos, que pode ser uma venda, um orçamento, etc. Essa tabela possui um número de nota, e, para cada movimentação de saída, é necessário gerar um número de nota. Para isso pensei em usar sequences, eu crio uma para cada tipo de movimentação de saída (venda, orçamento, etc) e executo toda vez que for cadastrar uma nova movimentação. Porém, o mapeamento padrão de sequence é para a PK da tabela, e seria uma única sequence, o meu caso é diferente.
No meu caso eu preciso executar manualmente a sequence correspondente ao tipo da movimentação, mas não quero executar usando SQL, pois dessa forma eu fico dependente do banco de dados, alguém sabe se existe alguma forma de mapear a sequence via JPA e executar?

Boa tarde!

Acredito que seja isto que esteja procurando…

>  @TableGenerator(name="USER_GENERATOR",
>             table="GENERATED_KEYS",
>             pkColumnName="PK_COLUMN",
>             valueColumnName="VALUE_COLUMN",
>             pkColumnValue="USER_ID",
>             allocationSize=1
>     )
>     @Id
>     @GeneratedValue(strategy = GenerationType.TABLE, generator="USER_GENERATOR")
>     private int id;

Bom dia Jonathan,
Desculpe a demora para responder, mas, como havia dito, no meu caso, a coluna não é uma PK, é um “sequencial burro”.

Qual é o seu BD?

Estou usando o postgres, mas estou tentando fazer algo mais independente do BD…

Dizem que dá pra fazer com o Postgresql http://stackoverflow.com/a/4979988


@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;

Senão você terá que criar um Trigger. Foi que eu vi até o momento o @GeneratedValue não funciona p/ field’s que não tem a anotação @Id .