2013-06-27 12 views
3

當我將ddl-generation設置爲drop-and-create-tables時,一切都很好。但是,當它被設置爲創建有或延長桌,我得到這個:當ddl-generation是create-or-extend-tables時,hsqldb不能與eclipselink一起工作

Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PERSON_ID_SEQ 

這是我如何設置它:

的persistence.xml

<persistence ...> 
    <persistence-unit name="persistencetest"> 
    <properties> 
     <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" /> 

     <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:test-db" /> 

     <property name="javax.persistence.jdbc.user" value="sa" /> 
     <property name="javax.persistence.jdbc.password" value="" /> 

     <property name="eclipselink.ddl-generation" value="create-or-extend-tables" /> 
     <property name="eclipselink.ddl-generation.output-mode" value="database" /> 
    </properties> 

    <class>test.Person</class> 
    </persistence-unit> 
</persistence> 

Person.java

@Entity 
public class Person 
{ 
    @Id 
    @SequenceGenerator(name = "id_seq", sequenceName = "PERSON_ID_SEQ") 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_seq") 
    private long id; 

    ... 
} 

的pom.xml

... 
<dependency> 
    <groupId>org.glassfish.extras</groupId> 
    <artifactId>glassfish-emdedded-all</artifactId> 
    <version>3.1</version> 
    <scope>test</scope> 
</dependency> 

<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>org.eclipse.persistence.jpa</artifactId> 
    <version>2.4.1</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>org.hsqldb</groupId> 
    <artifactId>hsqldb</artifactId> 
    <version>2.2.9</version> 
</dependency> 
... 

那麼,當drop-and-create-tables正常運行時,導致create-or-extend-table失敗的原因是什麼?

回答

0

這是一個錯誤,還是隻是一個警告被記錄?如果沒有錯誤發生,它只是一個警告,你可以忽略它。它只是測試看看序列是否存在。

如果發生錯誤,請包含完整的異常堆棧和SQL日誌。