usadas tablas serial provienen para paquete mapeo mapear las herencia framework datos con anotaciones hibernate postgresql sequence auto-increment

tablas - mapeo de datos con el framework hibernate



Mapeo del tipo serial de PostgreSQL con anotaciones de Hibernate (3)

El siguiente mapeo debería funcionar bien:

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

Sin embargo, tenga en cuenta que el valor generado para los objetos recién guardados no estará disponible hasta que se vacíe 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 de 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), puedes usar esto:

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

Estoy usando Hibernate 3.3 y PostgreSQL 8.x y me gustaría usar las anotaciones de Hibernate para asignar una columna de incremento automático que NO es una clave principal.

No importa si la columna se asigna mediante el tipo SERIAL o las secuencias en Postgres, siempre que la base de datos se incremente automáticamente por Hibernate y no por Hibernate. Probé las siguientes asignaciones, pero siempre generaron un id. De orden nulo.

@Column(name = "orderId", insertable = false) @Generated(GenerationTime.INSERT) //@GeneratedValue(strategy = javax.persistence.GenerationType.AUTO) private Integer orderId;

Apreciaré cualquier ayuda con esto.

Gracias


Estoy usando esto con postgresql9.1, debería funcionar con 8 también:

@SequenceGenerator(allocationSize=1, initialValue=1, sequenceName="account_id_seq", name="account_id_seq") @GeneratedValue(generator="account_id_seq", strategy=GenerationType.SEQUENCE) @Id @Column(name="id") private Integer id;


La respuesta aceptada no funciona para mí.

esto hizo sin embargo:

@Id @Column(name = "your_id", columnDefinition = "serial") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer yourId;