PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Mapeando o tipo serial do PostgreSQL com anotações do Hibernate


O seguinte mapeamento deve funcionar bem:
@Column(name = "orderId")
@Generated(GenerationTime.INSERT)
private Integer orderId;

Observe, no entanto, que o valor gerado para objetos recém-salvos não está disponível até que a sessão seja liberada.

EDITAR: Observe que esse mapeamento não afeta não faz com que o Hibernate crie uma coluna do tipo serial durante a geração do esquema, já que o Hibernate não sabe nada sobre a natureza da geração de valor no lado do banco de dados. Portanto, se você quiser que o Hibernate crie uma coluna com um tipo adequado, você precisa especificá-la explicitamente:
@Column(name = "orderId", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer orderId;

E em uma versão recente do Hibernate (4.3), você pode usar isso:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long orderId;