如何在persistence.xml中指定相对于应用程序文件夹的jdbc.url?

发布于 2024-09-14 01:09:00 字数 279 浏览 5 评论 0原文

一旦我使用 JPA 部署应用程序,用户就会选择将其安装在某个地方。然而,设置为:的属性

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

被解释为以下异常: 无法在 \db 中创建数据库。 在整个开发过程中,它曾经是项目文件夹的相对路径,而不是现在的根目录。 我应该怎么做才能使路径保持相对于安装应用程序的文件夹的路径? 或者更糟糕的是,userdir。

Once I deploy my application with JPA the user chooses to install it somewhere. Then however the property set as:

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

gets interpreted into the following exception:
couldn't create database in \db.
Throughout development it used to be the relative path to the project folder, and not the root as it's now.
What should I do to make the path remain relative to the folder in which the application is installed?
Or at the very worse, the userdir.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

画中仙 2024-09-21 01:09:00

您应该在创建连接之前将安装位置写入某处,并将 derby.system.home 系统属性设置为此位置。引用 在桌面应用程序中使用 Java DB 文章:

连接到 Java DB 数据库

...

所有连接 URL 均具有以下内容
形式:

jdbc:derby:[propertyList]

URL 的 dbName 部分
标识特定的数据库。一个
数据库可以是多个数据库之一
地点:当前工作中
目录、类路径上、JAR 中
文件,位于特定的 Java DB 数据库中
主目录,或绝对目录
文件系统上的位置。
管理数据库的最简单方法
嵌入式环境中的位置是
设置 derby.system.home 系统
财产。该属性告诉 Java DB
所有的默认家庭位置
数据库。通过设置这个属性,
地址簿演示确保
Java DB 总是找到正确的
应用数据库。应用
数据库名为DefaultAddressBook
它将存在于目录中
derby.system.home 指示
财产。此连接 URL
数据库看起来像这样:

jdbc:derby:DefaultAddressBook

...

连接到DefaultAddressBook
数据库,演示必须首先设置
derby.system.home 系统属性。
该演示使用 .addressbook
用户家的子目录
目录。使用 System 类
找出用户的主目录。
然后再次使用该类来设置
derby.system.home 属性:

private void setDBSystemDir() {
    // 确定数据库系统目录:/.addressbook/
    String userHomeDir = System.getProperty("user.home", ".");
    String systemDir = userHomeDir + "/.addressbook";

    // 设置数据库系统目录。
    System.setProperty("derby.system.home", systemDir);
}

You should write the install location somewhere and set the derby.system.home system property to this location before creating the connection. Quoting the Using Java DB in Desktop Applications article:

Connecting to the Java DB Database

...

All connection URLs have the following
form:

jdbc:derby:<dbName>[propertyList]

The dbName portion of the URL
identifies a specific database. A
database can be in one of many
locations: in the current working
directory, on the classpath, in a JAR
file, in a specific Java DB database
home directory, or in an absolute
location on your file system. The
easiest way to manage your database
location in an embedded environment is
to set the derby.system.home system
property. This property tells Java DB
the default home location of all
databases
. By setting this property,
the Address Book demo ensures that
Java DB always finds the correct
application database. The application
database is named DefaultAddressBook,
and it will exist within the directory
indicated by the derby.system.home
property. The connection URL for this
database would look like this:

jdbc:derby:DefaultAddressBook

...

To connect to the DefaultAddressBook
database, the demo must first set the
derby.system.home system property.
The demo uses the .addressbook
subdirectory of the user's home
directory. Use the System class to
find out the user's home directory.
Then use the class again to set the
derby.system.home property:

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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文