Следующее отображение должно работать нормально:
@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;