2013-03-25 41 views
0

我是.Net程序員,但這次我正在開發Java項目,並遇到一些困難。 這個java項目不是我的,它是由其他開發人員開發的,它使用Hibernate。Annotation @SequenceGenerator和編譯錯誤

當我運行Ant構建我收到此錯誤:在一個名爲package-info.java

9: error: annotation type not applicable to this kind of declaration 
@SequenceGenerator(name="companynameSequence" , sequenceName="COMPANYNAME_SEQUENCE" , allocationSize=1) 
^ 

此註釋。該文件的內容的代碼只是這幾行:

@SequenceGenerator(name="companynameSequence" , sequenceName="COMPANYNAME_SEQUENCE" , allocationSize=1) 
package com.companyname.application.model; 

import javax.persistence.SequenceGenerator; 

import org.hibernate.annotations.Parameter; 
import org.hibernate.annotations.TypeDef; 
import org.jasypt.hibernate.type.EncryptedStringType; 

如果我刪除註釋項目編譯成功,但我有一個運行時錯誤:

Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unknown Id.generator: companynameSequence 

我使用Eclipse朱諾和JRE 1.7

你能幫我嗎?

謝謝

回答

0

註解不應影響運行時行爲。因此,我建議評論註釋並修復錯誤。然而,我不能解釋註釋的意圖或爲什麼會引發錯誤。

+0

不幸的是,如果我註釋掉註釋,我收到這個異常: '調用init方法失敗;嵌套異常是org.hibernate.AnnotationException:未知Id.generator:companynameSequence' – user2208393 2013-03-25 17:10:12

+0

@ user2208393對不起,我幫不了你。 – raptortech97 2013-03-25 17:13:57

1

你需要寫這樣的事:

//different annotations 
class className{ 
     @Id 
     @SequenceGenerator(sequenceName = "COMPANYNAME_SEQUENCE", name = "companynameSequence") 
     @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="companynameSequence") 
     @Column(name="ID", nullable=false, unique=true) 
     private int id; 
//other fields and methods 
} 

或本:

//different annotations 
class className{ 
     @Id 
     @SequenceGenerator(sequenceName = "COMPANYNAME_SEQUENCE", name = "companynameSequence") 
     @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="companynameSequence") 
     @Column(name="ID", nullable=false, unique=true) 
     public int getId(){}; 
//other fields and methods 
} 

這僅僅是例子,字段名可能與我的不同。

和閱讀this後有關標識符和發電機

+0

謝謝,但我在package-info.java文件中沒有任何「class」。只有「包」聲明和一些導入。 – user2208393 2013-03-26 09:27:15

+0

@ user2208393你的堆棧跟蹤告訴它找不到這樣的序列。檢查你的完整堆棧跟蹤,我認爲你找到你使用這個序列的類,並在那裏添加'@ SequenceGenerator'註釋 – 2013-03-26 09:42:58

0

我只是遇到這個問題,從遷移1.6〜1.8時。這裏的問題是@ javax.persistence.SequenceGenerator只針對@Target({TYPE,METHOD,FIELD}),而不是包。這是一個錯誤,直到java 1.7註釋未被正確處理。我不知道修復是什麼,但我正在尋找它。