我需要用EclipseLink开发一个OSGi包,它应该连接到PostgreSQL,但是我浪费了一大堆时间,无法完成工作。我收到“javax.persistence.PersistenceException:EntityManager命名空间没有持久性提供程序”。如何使用EclipseLink使PostgreSQL与OSGi协同工作
基本上,我遵循我在网上找到的教程的步骤。我使用Eclipse靛蓝
Manifest file :
Manifest-Version: 1.0
Meta-Persistence: persistence.xml
JPA-PersistenceUnits: rooms
Bundle-ClassPath: ., META-INF/persistence.xml
Bundle-ManifestVersion: 2
Bundle-Name: PMSTestTask
Bundle-SymbolicName: PMSTestTask
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: pmstesttask.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: javax.persistence;version="2.0.3", org.osgi.framework;version="1.3.0", org.postgresql
Require-Bundle: org.eclipse.persistence.jpa;bundle-version="2.1.0", org.eclipse.persistence.jpa.osgi;bundle-version="2.3.0"
的persistence.xml
<?xml version="1.0" encoding="UTF-8" ?>
<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="rooms" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>test_task.domain.Room</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:postgresql://localhost:5432/Hotel_test_task" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />
</properties>
</persistence-unit>
</persistence>
Activator.java
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("rooms");
EntityManager em = emf.createEntityManager();
更新。 0
添加了要求清单的bundle。而得到这个
org.osgi.framework.BundleException: The bundle "org.eclipse.persistence.jpa.osgi_2.3.0.v20110604-r9504 [26]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.persistence.core; bundle-version="2.3.0"
您是否尝试在没有标签的情况下运行?提供者应该由EclipseLink隐含地初始化。 –
2012-02-13 07:38:00
是的,我已经尝试没有,但它只是没有工作 –
2012-02-13 17:15:02
你使用什么版本的春分?我知道Equinox 3.7.0不适用于EclipseLink 2.3.x. – 2012-02-13 22:37:04