Java持久性实体管理器工厂返回null

时间:2011-10-06 01:54:38

标签: java mysql eclipse jpa persistence

我正在使用带JPA的MySql数据库。我的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="citheph">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>persistence.citheph.pTerm</class>
        <class>persistence.citheph.pPublicationterm</class>
        <class>persistence.citheph.pPublicationauthor</class>
        <class>persistence.citheph.pPublication</class>
        <class>persistence.citheph.pCoauthorship</class>
        <class>persistence.citheph.pCitation</class>
        <class>persistence.citheph.pAuthor</class>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/cithepth" />
            <property name="javax.persistence.jdbc.password" value="amer1" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.user" value="root" />
        </properties>

    </persistence-unit>
</persistence>

在我的java代码中,我执行以下操作

EntityManagerFactory emf = Persistence.createEntityManagerFactory("citheph");
EntityManager em = emf.createEntityManager();
emf总是回来null。数据库已连接并成功ping。我甚至试图将持久性单元名称更改为与persistance.xml中的条目不匹配的内容,并且我仍然为null。它没有抛出任何例外。当它到达代码中的第二行

EntityManager em = emf.createEntityManager();

我得到一个空指针异常。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您确定persistence.xml文件位于META-INF文件夹中吗?

答案 1 :(得分:0)

启用最佳登录并确保加载持久性单元时没有发生错误。

您使用的是哪种环境,您的类路径上是否包含所有必需的罐子?