1

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

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

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

4

1 回答 1

2

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

连接到 Java DB 数据库

...

所有连接 URL 都具有以下形式:

jdbc:derby:<dbName>[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() {
    // 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);
}
于 2010-08-07T14:46:07.387 回答