Jpa 使用EclipseLink从另一个项目访问Derby数据库

Jpa 使用EclipseLink从另一个项目访问Derby数据库,jpa,eclipselink,derby,Jpa,Eclipselink,Derby,我有一个创建和编写Derby数据库的动态web项目。一切正常。以下是我使用的persistence.xml: 如果我使用create=true,它将创建一个新的数据库实例,它与我在web项目中创建的数据库实例不同。如何解决此问题?非常感谢 由于您在jdbc.url数据库/bDb中使用相对文件名,因此Derby正在查找与应用程序启动目录相关的数据库 您的两个独立的应用程序有两个独立的目录在其中运行 您可以通过多种方式解决此问题: 安排每个应用程序从同一目录运行 在jdb.url值中使用绝对数据库路

我有一个创建和编写Derby数据库的动态web项目。一切正常。以下是我使用的persistence.xml:


如果我使用create=true,它将创建一个新的数据库实例,它与我在web项目中创建的数据库实例不同。如何解决此问题?非常感谢

由于您在jdbc.url数据库/bDb中使用相对文件名,因此Derby正在查找与应用程序启动目录相关的数据库

您的两个独立的应用程序有两个独立的目录在其中运行

您可以通过多种方式解决此问题:

安排每个应用程序从同一目录运行 在jdb.url值中使用绝对数据库路径名,而不是相对数据库路径名 使用Derby网络服务器配置,而不是Derby嵌入式配置
毫无疑问,还有其他方法可以解决这个问题。

。谢谢!
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="alerts" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>test.Alert</class>
    <properties>
        <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:derby:databases/bDb;create=true" />
        <property name="javax.persistence.jdbc.user" value="user" />
        <property name="javax.persistence.jdbc.password" value="user-pwd" />
        <!-- EclipseLink should create the database schema automatically -->
        <property name="eclipselink.ddl-generation" value="create-tables" />
        <property name="eclipselink.ddl-generation.output-mode"
            value="database" />

        <property name="eclipselink.logging.level" value="FINEST" />
        <property name="eclipselink.logging.level.sql" value="FINEST" />
    </properties>
</persistence-unit>
[EL Severe]: ejb: 2014-12-28 22:27:20.379--ServerSession(1488953836)--Thread(Thread[DefaultQuartzScheduler_Worker-7,5,main])--Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Database 'databases/bDb' not found.
Error Code: 40000
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:331)
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:326)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:138)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:204)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:741)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:239)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:685)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302)