Java: Hibernate и Embedded Derby; создать дерби в другом месте / каталоге - PullRequest
1 голос
/ 21 июня 2011

Я ничего не нашел в Google, но я думаю, что это возможно.

У меня серьезная проблема с моим проектом Hibernate:

У меня есть два модуляодин главный модуль и один инструментальный модуль.Они должны использовать одну и ту же БД (встроенный Derby, потому что оба Модуля не будут запущены одновременно).

Поэтому, если я запускаю Модуль, он создает БД в Java Project-Directory, но я хочуБД создала уровень «над» каталогом проектов.Файл hibernate.cfg.xml, файлы сопоставления и DAO находятся в главном модуле.

Поэтому я хочу, чтобы это выглядело так:

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

Но на самом деле это выглядит так:

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

Это соответствующая часть моего файла конфигурации hibernate:

<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 ]

2 голосов
/ 07 мая 2012

Установите свойство 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 голос
/ 08 октября 2012
<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>

Это попытается, возможно, вы получите решение

Использование приведенного выше кода поможет вашему решению.

1 голос
/ 21 июня 2011

Попробуйте:

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

Не уверен, если это работает, хотя.

...