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