Как указать jdbc.url в файле persistence.xml относительно папки приложения? - PullRequest
1 голос
/ 07 августа 2010

Как только я разверну свое приложение с JPA, пользователь решит установить его где-нибудь.Однако затем свойство, установленное как:

<property name="javax.persistence.jdbc.url" value="jdbc:derby:db;create=true"/>

, интерпретируется как следующее исключение: не удалось создать базу данных в \ dbНа протяжении всей разработки это был относительный путь к папке проекта, а не корневой каталог, как сейчас.Что я должен сделать, чтобы путь оставался относительно папки, в которой установлено приложение?Или, что еще хуже, userdir.

1 Ответ

2 голосов
/ 07 августа 2010

Вы должны написать место установки где-нибудь и установить системное свойство derby.system.home в это местоположение перед созданием соединения. Цитирование Использование Java DB в настольных приложениях статья:

Подключение к базе данных Java DB

...

Все URL-адреса подключения имеют следующий форма:

jdbc:derby:<dbName>[propertyList]

Часть URL dbName идентифицирует конкретную базу данных. База данных может быть в одном из многих Места: в текущей работе каталог, на пути к классам, в JAR файл, в конкретной базе данных Java DB домашний каталог, или в абсолютном расположение в вашей файловой системе. The Самый простой способ управлять вашей базой данных расположение во встроенной среде установить систему derby.system.home имущество. Это свойство сообщает Java DB домашнее местоположение по умолчанию для всех базы данных . Установив это свойство, демонстрация адресной книги гарантирует, что БД Java всегда находит правильный база данных приложения. Приложение база данных называется DefaultAddressBook, и он будет существовать в каталоге обозначено derby.system.home имущество. URL соединения для этого база данных будет выглядеть так:

jdbc:derby:DefaultAddressBook

...

Для подключения к DefaultAddressBook базы данных, демо должно сначала установить derby.system.home системное свойство. Демо использует .addressbook подкаталог домашнего пользователя каталог. Используйте класс System для узнать домашний каталог пользователя. Затем снова используйте класс, чтобы установить derby.system.home свойство:

private void setDBSystemDir() {
    // Decide on the db system directory: <userhome>/.addressbook/
    String userHomeDir = System.getProperty("user.home", ".");
    String systemDir = userHomeDir + "/.addressbook";

    // Set the db system directory.
    System.setProperty("derby.system.home", systemDir);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...