O seguinte mapeamento deve funcionar bem:
@Column(name = "orderId")
@Generated(GenerationTime.INSERT)
private Integer orderId;
Observe, no entanto, que o valor gerado para objetos recém-salvos não está disponível até que a sessão seja liberada.
EDITAR: Observe que esse mapeamento não afeta não faz com que o Hibernate crie uma coluna do tipo
serial
durante a geração do esquema, já que o Hibernate não sabe nada sobre a natureza da geração de valor no lado do banco de dados. Portanto, se você quiser que o Hibernate crie uma coluna com um tipo adequado, você precisa especificá-la explicitamente:@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;
E em uma versão recente do Hibernate (4.3), você pode usar isso:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long orderId;