我正在使用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;