Noob问题在这里.我正在关注
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中未列出的持久性单元
>仔细检查Eclipse中是否包含必要的JAR
建立路径库,谷歌建议可能是一个可能的原因
对于createEntityManagerFactory()调用短路和返回
null(而不是仅抛出异常或记录消息)
>可能是由于可能的错误whilst configuring Hibernate
连接?
在过去几周我一直在打这堵墙,所以不用说任何帮助/一般方向提示都非常感谢:D
最佳答案 加斯顿,我有一些建议/问题:
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>
请注意,标头有一些可能很重要的XML声明,因为Hibernate告诉您文件不正确.