Postgres 9.1中的Serial id的Hibernate注释

时间:2014-09-22 07:48:20

标签: java hibernate postgresql-9.1 hibernate-annotations

使用此批注编译Java代码时出错:

@Id
@Column(name="\"idClass\"", unique=true, nullable=false, columnDefinition = "serial")
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer idClass;

<property name="show_sql">true</property> 在调试中它返回:

Hibernate: select nextval ('hibernate_sequence')

id列是串行的。有任何想法吗? 我尝试使用@Generated(GenerationTime.INSERT)进行编译,但不会运行。感谢。

[解决]

我的解决方案是:

     @Id
     @SequenceGenerator(name="IDCLASS_GENERATOR", sequenceName="\"table_idClass_seq\"", allocationSize = 1)
     @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="IDCLASS_GENERATOR")
     @Column(name="\"idClass\"")

2 个答案:

答案 0 :(得分:0)

见下面的代码

@Column(name="idClass", unique=true, nullable=false, columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
private Integer idClass;

或者您可以使用

@GeneratedValue(strategy = GenerationType.IDENTITY)

答案 1 :(得分:0)

你真正的问题是区分大小写,tu用例敏感的列名,你必须用反引号包装它。

@Id 
@Column(name="`idClass`") 
@GeneratedValue(strategy = IDENTITY)
private Integer idClass;