Poniższe mapowanie powinno działać poprawnie:
@Column(name = "orderId")
@Generated(GenerationTime.INSERT)
private Integer orderId;
Należy jednak zauważyć, że wygenerowana wartość dla świeżo zeskładowanych obiektów nie jest dostępna, dopóki sesja nie zostanie opróżniona.
EDYTUJ: Zauważ, że to mapowanie nie ma wpływu na to, że Hibernate nie powoduje utworzenia kolumny typu serial
podczas generowania schematu, ponieważ Hibernate nie wie nic o naturze generowania wartości po stronie bazy danych. Dlatego jeśli chcesz, aby Hibernate utworzył kolumnę o odpowiednim typie, musisz to wyraźnie określić:
@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;
W najnowszej wersji Hibernate (4.3) możesz użyć tego:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long orderId;