【发布时间】:2012-09-28 08:01:17
【问题描述】:
我整个星期都在努力学习 Java EE。我正在通过 Netbeans 7.2 使用 Restlet 2.0、Spring、Hibernate 和 Maven 构建 REST api。现在,每当我进行尝试将数据持久化到数据库的服务调用时,以下方法都会引发NullPointerException
@Override
public void save(T object) {
entityManager.persist(object);
}
通过查看代码,以下部分应该注入entityManager
protected EntityManager entityManager;
@PersistenceContext
public void setEngityManager(EntityManager entityManger) {
this.entityManager = entityManager;
}
我找到了链接EntityManager injection results in NullPointerException。但是我太新了,无法理解如何在我的代码中实现它。另外,我使用的是 Glassfish 3.1.2。
有人可以帮忙提供一些代码示例吗?
编辑/更新:
下面是我正在使用的 persistence.xml 文件。我正在运行 MySQL 和 Glassfish。我应该将它保存在WEB-INF 下(persistence-context.xml 所在的位置)还是src/main/resource 下hibernate.cfg.xml 所在的位置?
<?xml version="1.0" encoding="UTF-8"?>
<persistence-unit name="pu1" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.mysite.restapi.RestletChildApplication</class>
<properties>
<property name="hibernate.connection.driver_class"
value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost:3306/mydatabase" />
<property name="hibernate.connection.username" value="myname"/>
<property name="hibernate.connection.password" value="mypassword"/>
<property name="show_sql" value="true" />
<property name="dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
【问题讨论】:
-
我正在运行
java EE 6 -
注射从何而来?根据
<class>com.mysite.restapi.RestletChildApplication</class>行,我是否应该在com.mysite.restapi.RestletChildApplication类中创建EntityManager的实例?
标签: java spring hibernate glassfish-3 entitymanager