Ánh xạ sau sẽ hoạt động tốt:
@Column(name = "orderId")
@Generated(GenerationTime.INSERT)
private Integer orderId;
Tuy nhiên, lưu ý rằng giá trị được tạo cho các đối tượng mới được lưu không có sẵn cho đến khi phiên được xóa.
CHỈNH SỬA: Lưu ý rằng ánh xạ này không ảnh hưởng đến không làm cho Hibernate để tạo một cột loại serial
trong quá trình tạo lược đồ, vì Hibernate không biết gì về bản chất của việc tạo giá trị ở phía cơ sở dữ liệu. Do đó, nếu bạn muốn Hibernate tạo một cột có kiểu thích hợp, bạn cần xác định nó một cách rõ ràng:
@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;
Và trên phiên bản Hibernate gần đây (4.3), bạn có thể sử dụng cái này:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long orderId;