次のマッピングは正常に機能するはずです:
@Column(name = "orderId")
@Generated(GenerationTime.INSERT)
private Integer orderId;
ただし、新しく保存されたオブジェクトに対して生成された値は、セッションがフラッシュされるまで使用できないことに注意してください。
編集: このマッピングは、Hibernateがserial
タイプの列を作成することには影響しないことに注意してください。 スキーマ生成中、Hibernateはデータベース側での値生成の性質について何も知らないためです。したがって、Hibernateで適切なタイプの列を作成する場合は、明示的に指定する必要があります。
@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;
また、最近のHibernateバージョン(4.3)では、これを使用できます:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long orderId;