2016-11-16 30 views
0

我有一個使用Oracle DB的應用程序。 對於單元測試,我正在使用HSQLDB。Java實體無法在HSQLDB中的腳本創建表中保留

我已經以這種方式創建產品表腳本在HSQLDB:

CREATE TABLE PRODUCT 
(
    ID INTEGER IDENTITY PRIMARY KEY, 
    NAME VARCHAR (73) 
); 

我有一個實體:

@Entity 
@Table(name = "PRODUCT") 
public class Product implements Serializable { 
    @Id 
    @Column(name = "ID", nullable = false) 
    private int id; 

    @Column(name = "NAME") 
    private String name; 

    ... Getters, Setters... 
} 

問題是,當我試圖堅持一個產品(當然我創建表後)我得到這個錯誤:

javax.persistence.RollbackException: Error while committing the transaction 
... 
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PRODUCT 
... 

你知道爲什麼java e ntity沒有看到表格? 謝謝您的建議!

+0

javafan,看看我的答案,也許它可以解決你的問題 – BrunoDM

回答

0

通常的原因是數據庫中的URL不正確。您在一個數據庫中創建表,但是您的應用程序指向另一個數據庫,該數據庫爲空。使用絕對路徑或基於用戶主目錄的路徑或者是系統屬性的目錄路徑。

http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html#dpc_variables_url

+0

謝謝,但我認爲問題是別的,因爲我可以從Java單元測試類的表上運行SQL選擇應用程序。 – javafan

0

我也有類似的問題,我在腳本的第一行用以下命令解決:

create schema sce AUTHORIZATION DBA; 

在我的項目,該表是由Hibernate創建和在創建階段發生同樣的錯誤。