sql >> Base de Datos >  >> RDS >> PostgreSQL

Mapeo del tipo de serie de PostgreSQL con anotaciones de Hibernate

La siguiente asignación debería funcionar bien:

@Column(name = "orderId")
@Generated(GenerationTime.INSERT)
private Integer orderId;

Tenga en cuenta, sin embargo, que el valor generado para los objetos recién guardados no está disponible hasta que se vacía la sesión.

EDITAR: Tenga en cuenta que esta asignación no afecta a Hibernate para crear una columna de tipo serial durante la generación del esquema, ya que Hibernate no sabe nada sobre la naturaleza de la generación de valor en el lado de la base de datos. Por lo tanto, si desea que Hibernate cree una columna con un tipo adecuado, debe especificarlo explícitamente:

@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;

Y en una versión reciente de Hibernate (4.3), puede usar esto:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long orderId;