Mapping PostgreSQL serial type with Hibernate annotations
the accepted answer doesn't work for me.
this did though:
@Id
@Column(name = "your_id", columnDefinition = "serial")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer yourId;
The following mapping should work fine:
@Column(name = "orderId")
@Generated(GenerationTime.INSERT)
private Integer orderId;
Note, however, that generated value for freshly saved objects is not available until session is flushed.
EDIT: Note that this mapping doesn't affect doesn't make Hibernate to create a column of type serial
during schema generation, since Hibernate doesn't know anything about the nature of value generation at the database side. Therefore, if you want Hibernate to create a column with a proper type, you need to specifiy it explicitly:
@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;
And on a recent Hibernate version (4.3), you can use this:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long orderId;