La seguente mappatura dovrebbe funzionare correttamente:
@Column(name = "orderId")
@Generated(GenerationTime.INSERT)
private Integer orderId;
Si noti, tuttavia, che il valore generato per gli oggetti appena salvati non è disponibile fino allo svuotamento della sessione.
MODIFICA: Nota che questa mappatura non ha effetto non fa in modo che Hibernate crei una colonna di tipo serial
durante la generazione dello schema, poiché Hibernate non sa nulla della natura della generazione del valore lato database. Pertanto, se vuoi che Hibernate crei una colonna con un tipo appropriato, devi specificarla esplicitamente:
@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;
E su una recente versione di Hibernate (4.3), puoi usare questo:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long orderId;