Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在创建EntityManager时使用Oracle-NullPointerException打开JPA_Jpa - Fatal编程技术网

在创建EntityManager时使用Oracle-NullPointerException打开JPA

在创建EntityManager时使用Oracle-NullPointerException打开JPA,jpa,Jpa,我是OpenJPA的新手。当我试图用OpenJPA和Oracle编写一个示例程序时,在创建EntityManager时遇到了一个NullPointerException 示例程序是 public static void main(String[] args) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("testjpa"); Ent

我是OpenJPA的新手。当我试图用OpenJPA和Oracle编写一个示例程序时,在创建EntityManager时遇到了一个NullPointerException

示例程序是

    public static void main(String[] args) {
        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("testjpa");
        EntityManager em = entityManagerFactory.createEntityManager();
        EntityTransaction userTransaction = em.getTransaction();

        userTransaction.begin();
        Customer customer = new Customer();
        customer.setFirstName("Charles");
        customer.setLastName("Dickens");
        customer.setCustType("RETAIL");
        customer.setStreet("10 Downing Street");
        customer.setAppt("1");
        customer.setCity("NewYork");
        customer.setZipCode("12345");
        em.persist(customer);
        userTransaction.commit();
        em.close();
        entityManagerFactory.close();
}
persistence.xml是

<persistence-unit name="testjpa">
    <provider>
        org.apache.openjpa.persistence.PersistenceProviderImpl
    </provider>
    <class>sample.jpa.entity.Customer</class>
    <properties>
        <property name="openjpa.jdbc.DBDictionary" value="oracle(DriverVendor=oracle)" />
        <property name="openjpa.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:xe" />
        <property name="openjpa.ConnectionDriverName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="openjpa.ConnectionUserName" value="xxxxx" />
        <property name="openjpa.ConnectionPassword" value="xxxxx" />
        <property name="openjpa.Log" value="SQL=TRACE" />
    </properties>
</persistence-unit>
这是发生在

EntityManager em = entityManagerFactory.createEntityManager();

有人能帮我解决这个问题吗?

就像Eelke已经告诉过你的那样:你必须发布准确的堆栈跟踪。如果没有堆栈,就没有机会开始调试

我还希望您的代码片段中“持久性”后面的空白只是一个输入错误:

EntityManagerFactory entityManagerFactory = Persistence .createEntityManagerFactory("testjpa");

Sebastian

如果您在tomcat或glassfish等应用服务器中运行此操作,日志中可能会有一些有用的信息。比如它无法连接或者找不到jdbc驱动程序。更新了详细信息。我没有使用任何应用服务器。尝试使用控制台应用程序。应用程序服务器无关;无论从何处运行JPA实现,都会从中获得日志。您试图创建一个EMF,但在该行它是空的,所以使用日志告诉您为什么要通过Spring设置OpenJPA,或者您使用什么样的环境来初始化/加载工厂。。。通常persistence.xml的周围是:,您的文件似乎不完整。。。此外,堆栈跟踪还包含一行以上的代码。堆栈跟踪是一个完整的例外,整个上下文不只是一行。在点之前的空白不会造成任何伤害-除了你的审美印象。
EntityManagerFactory entityManagerFactory = Persistence .createEntityManagerFactory("testjpa");