gpt4 book ai didi

java - JPA - createEntityManagerFactory 返回 Null

转载 作者:搜寻专家 更新时间:2023-11-01 03:28:12 24 4
gpt4 key购买 nike

菜鸟问题在这里。我正在关注 this example/tutorial尝试找出我在主要项目中不断遇到的问题。问题是,entityManagerFactory 一直返回 null(因此,我在尝试运行第一个 JUnit 测试时得到 NullPointerExcept。)

我目前正在使用 Eclipse Indigo (JavaEE) - JRE7 - Hibernate 3.6.7 和 JBoss 7

这是我的 persistence.xml(同样是直接从教程中获取的 copipasta)

<persistence>
<persistence-unit name="examplePersistenceUnit"
transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />

<property name="hibernate.connection.driver_class"
value="org.hsqldb.jdbcDriver" />
<property name="hibernate.connection.url"
value="jdbc:hsqldb:mem:mem:aname" />
<property name="hibernate.connection.username" value="sa" />

<property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
</persistence-unit>
</persistence>

到目前为止我已经尝试/发现的事情:

  • 似乎是这个问题tends to occur如果您尝试创建工厂具有未在 persistence.xml 中列出的持久性单元

  • 仔细检查必要的 JAR 是否包含在 Eclipse 的构建路径库,谷歌建议这可能是一个可能的原因用于短路并返回的 createEntityManagerFactory() 调用null(而不只是抛出异常或记录消息)

  • 可能是由于一个可能的错误 whilst configuring hibernate 连接?

过去几周我一直在碰壁,所以不用说,非常感谢任何帮助/一般指导提示:D

最佳答案

Gaston,我有一些建议/问题要问你:

1 - 这是您要执行的代码吗?

package entity;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class PersonTest {
private EntityManagerFactory emf;

private EntityManager em;

@Before
public void initEmfAndEm() {
BasicConfigurator.configure();
Logger.getLogger("org").setLevel(Level.ERROR);

emf = Persistence.createEntityManagerFactory("examplePersistenceUnit");
em = emf.createEntityManager();
}

@After
public void cleanup() {
em.close();
}

@Test
public void emptyTest() {
}
}

如果是,请尝试注释此行:“Logger.getLogger("org").setLevel(Level.ERROR);”。或者改为“Logger.getLogger("org").setLevel(Level.ALL);”。然后您应该在输出控制台上看到错误。

2 - 在您的 persistence.xml 中,我看到您正在使用 hsqldb 数据库。您是否正确安装/配置了它?

如果你不知道这个数据库,我建议你使用MySQL、PostgreSQL,或者一些你熟悉的数据库。

3 - 检查您的 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="App1PU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.entities.User</class>
<class>com.entities.Group</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://myIP:3306/mydatabase"/>
<property name="javax.persistence.jdbc.password" value="secret"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="myUser"/>
</properties>
</persistence-unit>
</persistence>

请注意 header 有一些可能很重要的 XML 声明,因为 Hibernate 会告诉您文件不正确。

关于java - JPA - createEntityManagerFactory 返回 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7748223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com