2016-11-16 7 views
0

Oracle DBを使用しているアプリケーションがあります。 ユニットテストでは、HSQLDBを使用しています。私はこのようにHSQLDBにスクリプトを使ってPRODUCT表を作成したHSQLDBのスクリプト作成テーブルにJavaエンティティを永続化できません

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

私は、Entity持っている:

@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 
... 

あなたは、 ntityはテーブルを見ませんか? アドバイスをいただきありがとうございます。

+0

javafan、私の答えを見てください。多分あなたの問題を解決することができます – BrunoDM

答えて

0

通常の原因は、アプリケーションのデータベースURLが正しくないことです。 1つのデータベースにテーブルを作成しますが、アプリは空の別のデータベースを参照しています。絶対パス、またはユーザーのホームディレクトリに基づくパス、またはシステムプロパティであるディレクトリパスを使用します。

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

+0

ありがとうございます。しかし、私は、JavaユニットテストクラスからそのテーブルのアプリケーションからSQLを選択することができるので、 – javafan

0

私は同様の問題を持っていた、と私はスクリプトの最初の行に次のコマンドで解決:私のプロジェクトで

create schema sce AUTHORIZATION DBA; 

、テーブルは休止状態で作成し、作成フェーズで同じエラーが発生していました。

関連する問題