2017-05-17 8 views
0

HSQLDBが埋め込まれたJavaデスクトップアプリケーション(hibernateを使用)で1か月後にjarファイルにパッケージすると、HSQLDBにデータがまったくないようです。埋め込みHSQLDBアプリケーションでのデータなし

jarにismdb.scriptが存在し、データが含まれていることを確認しました。

ここ構造は

MyProjet 
    |___Main.java 
    |___resources 
     |____DATA 

、ここでは私のhibernate.cfg.xmlのは、私はテーブルの上にSELECTをしようとすると、私は、Javaを取得

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD//EN" 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 

    <property name="connection.url">jdbc:hsqldb:res:./data/ismdb</property> 

    <property name="connection.driver_class">org.hsqldb.jdbc.JDBCDriver</property> 

    <property name="hibernate.search.default.directory_provider">filesystem</property> 

    <property name="hibernate.search.default.indexBase">./data/</property> 

    <property name="hbm2ddl.auto">update</property> 

    <property name="connection.username">root</property> 
    <property name="connection.password">psw</property> 
     <mapping class="com.storeengine.model.Categories"/> 
    <mapping class="com.storeengine.model.Product"/> 
    <mapping class="com.storeengine.model.Row"/> 
    <mapping class="com.storeengine.model.Store"/> 
     <!-- DB schema will be updated if needed --> 
    <!-- <property name="hbm2ddl.auto">update</property> --> 
    </session-factory> 
</hibernate-configuration> 

です(HSQLDBデータがDATAフォルダ内にある)です。 lang.NullPointerException。

私はすべての種類のパスを試しましたが、プロジェクトの実際のDATAフォルダにデータベースパスを設定すると唯一のケースですが、もちろんソースコードでソフトウェアを出荷することはできません。私はそれに含まれているすべてを持つ単一のJARを持つ必要があります。

私は本当に立ち往生しています。 ありがとう

+0

私はあなたの質問を正しく理解しているかどうかはわかりません。本番環境でHSQLDBを使用してリリースすることを意味しますか? –

+0

あなたのURLは正しくありません。これは、 'jdbc:hsqldb:res:/ resources/DATA/ismdb'(大文字と小文字が区別され、Jarのルートから始まる)のようにする必要があります。 – fredt

+0

@KennyTaiHuynhはい私はプロダクションで使用しようとしています。 – josh

答えて

0

私は解決策を見つけました。同じ瓶にhsqldbを100%埋め込むことは不可能であると思われます。プロジェクトの外にデータフォルダを配置する必要があります。

私の場合は、hsqldb(または休止状態)がマシンのルートフォルダにあるスパイクされたパス(./data/ismdb)で空のフォルダを作成していることがわかりました。データの内容をコピーするだけです私のプロジェクトから作成したフォルダとvoilàフォルダに移動します。

関連する問題