使用Hibernate注释映射PostgreSQL序列类型

我正在使用Hibernate 3.3和PostgreSQL 8.x,并希望使用Hibernate注释映射一个非主键的自动递增列

在Postgres中是否使用串行类型或序列映射列并不重要,只要它由数据库自动递增,而不是由Hibernate自动递增。我尝试了以下映射,但它们总是生成空orderId

@列(name=“orderId”,insertable=false)
@已生成(GenerationTime.INSERT)
//@GeneratedValue(策略=javax.persistence.GenerationType.AUTO)
私有整数orderId;

我将非常感谢您的帮助

谢谢

以下映射应该可以正常工作:

@列(name=“orderId”)
@已生成(GenerationTime.INSERT)
私有整数orderId;

但是请注意,在刷新会话之前,新保存的对象的生成值不可用

EDIT:请注意,此映射不影响模式生成过程中,不会使Hibernate创建serial类型的列,因为Hibernate不知道数据库端值生成的性质。因此,如果希望Hibernate创建具有适当类型的列,则需要显式指定它:

@Column(name=“orderId”,columnDefinition=“serial”)
@已生成(GenerationTime.INSERT)
私有整数orderId;

在最新的Hibernate版本(4.3)上,您可以使用:

@Id
@GeneratedValue(策略=GenerationType.IDENTITY)
私有长orderId;

发表评论