Java:Hibernate和嵌入式Derby;在其他位置/目录上创建derby

时间:2011-06-21 17:43:55

标签: java directory derby

我在Google上没有找到任何相关内容,但我认为这是必须的。

我的Hibernate项目遇到了严重的问题:

我有两个模块,一个主模块和一个工具模块。它们应该使用相同的DB(嵌入式Derby,因为两个模块不会同时启动)。

因此,如果我启动一个模块,它会在Java项目目录中创建数据库,但我不会在数据库创建“项目目录”之上的级别。 hibernate.cfg.xml,映射文件和DAO位于主模块中。

所以我希望它看起来如此:

`rootDirecotry
    |
    +----myEmbeddedDerby
    |
    +----MainModule
    |
    +----ToolModule

但实际上它看起来如此:

`rootDirecotry
    |
    +----MainModule
    |     |
    |     +----myEmbeddedDerby
    |
    |
    +----ToolModule
    |     |
    |     +----myEmbeddedDerby

这是我的hibernate config-File的相关部分:

<property name="hibernate.connection.driver_class">org.apache.derby.jdbc.EmbeddedDriver</property>
<property name="hibernate.connection.password">password/property>
<property name="hibernate.connection.url">jdbc:derby:myEmbeddedDB;create=true</property>
<property name="hibernate.connection.username">admin</property>
<property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

在Connection之前设置属性“derby.system.home”。

private void setDerbyDBSystemDir() {
    // Decide on the Derby db system directory: <userhome>/.anotherDir/for/DerbyDB
    String systemDir = "./anotherDir/for/DerbyDB";

    // Set the db system directory.
    System.setProperty("derby.system.home", systemDir);
    System.err.println("setDBSystemDir: derby.system.home="+systemDir);
}

答案 1 :(得分:1)

尝试:

<property name="hibernate.connection.url">jdbc:derby:../myEmbeddedDB;create=true</property>

不确定,如果这样可行的话。

答案 2 :(得分:1)

<hibernate-configuration>
<session-factory>
  <property name="hibernate.connection.driver_class">
        org.apache.derby.jdbc.ClientDriver
  </property>
  <property name="hibernate.connection.url">
        jdbc:derby://localhost:<port-No>/<dbName>;create=true
  </property>
  <property name="hibernate.connection.username">admin</property>
  <property name="hibernate.connection.password">admin</property>
  <property name="hibernate.connection.pool_size">10</property>
  <property name="show_sql">true</property>
  <property name="dialect">org.hibernate.dialect.DerbyDialect</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <!-- Mapping files -->
  <mapping resource="/src/com/hbm/***.hbm.xml"/>
</session-factory>
</hibernate-configuration>

这会尝试,也许你会得到解决方案

使用上面的代码,将有助于您的解决方案。