2014-09-22 41 views
0

我有一個錯誤,當我編譯我的Java代碼與此註釋:在調試Hibernate的註解爲Serial ID在Postgres的9.1

@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\"") 
+1

你得到的錯誤是什麼? – Chaitanya 2014-09-22 07:57:04

+0

你到底想問什麼? – JavaBeigner 2014-09-22 07:58:12

+0

我必須使用哪個註釋來映射Postgres中的序列號? – django 2014-09-22 07:59:16

回答

0

請參見下面的代碼

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

,或者您可以使用

@GeneratedValue(strategy = GenerationType.IDENTITY) 
+0

謝謝,但它返回* org.postgresql.util.PSQLException:在此ResultSet *中找不到列名稱idClass。這個異常在被調用* session.saveOrUpdate(myObject)時被觸發; *其中* myObject *包含除* idClass *之外的相應表的所有值,因爲它是串行的並且未設置。 – django 2014-09-22 08:59:52

+0

嘗試使用@Id @Column(name =「\」idClass \「」) – JavaBeigner 2014-09-22 09:06:11

+0

現在org.hibernate.id.IdentifierGenerationException:*必須在調用save()之前手動分配此類的ids:... * @JavaBeigner – django 2014-09-22 09:33:37

0

你真正的問題是區分大小寫,請使用區分大小寫的列名,你必須用反引號包裝它。

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