0
我试图使用JPA和EclipseLink持久化元素。所以我创建了一个类坚持未找到EntityManager的持久性提供者
@Entity
public class Couple implements Serializable{
private static final long serialVersionUID = 1L;
@Column(name = "OBJECTID")
private String objectID;
@Column(name = "EPCNUMBER")
private String epcNumber;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
等等。 我创建了一个类来“使用”中指出:
public class Main {
private static final String PERSISTENCE_UNIT_NAME = "MyPU";
private static EntityManagerFactory factory;
public static void main(String[] args) {
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager em = factory.createEntityManager();
TypedQuery<Couple> q = em.createQuery("SELECT c FROM Couple c", Couple.class);
List<Couple> couples = (List<Couple>) q.getResultList();
然后,我已经下面的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/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">
<persistence-unit name="MyPU">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>localJTA</jta-data-source>
<class>fr.mypackage.com.Couple</class>
<properties>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<property name="eclipselink.ddl-generation.output-mode" value="database" />
<property name="eclipselink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
</persistence>
但是,即使当我改变了性质,我已经得到了同样的错误:
异常线程“main” javax.persistence.PersistenceException:否EntityManager的持久性提供者命名MyPU (主叫厂当= Persistence.createEntityManag erFactory(PERSISTENCE_UNIT_NAME))。
我对ling xml和持久性单元做了什么错误吗?我已经添加到类路径以下:
javax.persistence.jar
javax.ejb.jar
eclipselink.jar
javax.persistence_1.0.0.jar
javax.persistence_2.0.4.v201112161009.jar
derby.jar
你能帮我吗?谢谢 !
你有太多的persistence.jars在那里,你应该选择。需要更多信息来找出为什么没有找到eclipselink提供者。你可以在你的主类中添加eclipselink依赖项来验证类路径是否有它们。 – Chris
所以我删除这么OG他们,我只是有以下现在:javax.ejb.jar eclipselink.jar javax.persistence_2.0.4.v201112161009.jar 的derby.jar org.eclipse.persistence.jpa.jpql_1.0.1 .jar org.eclipse.persistence.jpa.modelgen.processor-2.3.2.jar但是我仍然有同样的情况。如何检查classpath是否包含eclipslink的依赖关系?谢谢 ! – Derbie
org.eclipse.persistence.jpa.jpql_1.0.1.jar jar是从哪里来的?检查您是否拥有完整的eclipselink.jar,而不是重命名其中的一个OSGI软件包 - 它应该有一个META-INF \ services \ javax.persistence.spi.PersistenceProvider文件,其中列出了要在标记中使用的提供程序类名称。在获取持久性单元之前,还要尝试在主要方法中初始化一个EclipseLink类 - 如果您的类路径设置不正确,它会给您一个编译/运行时错误。像新的org.eclipse.persistence.platform.database.DatabaesPlatform() –
Chris