簡體   English   中英

未注入EntityManager

[英]EntityManager not injected

我正在為我的EntityManager獲取NPE,卻不知道為什么-有人可以發現我的錯誤嗎?

UserManagerImpl.java

@Stateless
public class UserManagerImpl implements UserManager {

 @PersistenceContext(unitName = "persistenceUnit")
 EntityManager em;

 public List<User> findUsers() {
  return (List<User>) em.createQuery("from User").getResultList();
 }
}

META-INF / persistence.xml中

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd" version="1.0">
 <persistence-unit name="persistenceUnit">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
  <jta-data-source>java:/DefaultDS</jta-data-source>
  <properties>
   <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
   <property name="hibernate.hbm2ddl.auto" value="create" />
  </properties>
 </persistence-unit>
</persistence>

這些都在我的ejb jar項目中,從JSP調用UserManagerImpl,但不確定是否有所作為。

提前致謝。

當使用new UserManagerImpl() ,容器無法將EntityManager注入此類。 您需要使用以下命令讓容器將實例注入對象

@EJB
private UserManager userManager;

這僅適用於容器管理的對象,例如JSF管理的Bean,Servlet或JSP。 另外,您可以使用類似的方法從jndi查找ejb

new InitialContext().lookup("UserManagerImpl");

實際的jndi名稱可能不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM