java - 我的 persistenceManager 为空

标签 java jpa ejb persistent

我的接口(interface)定义为

@Local
public interface MyPersistenceManagerLocal {

  public List<PropertyList> getPropertyList(int id);

}

上述接口(interface)的实现类是

@Stateless
public class MyPersistenceManagerBean implements MyPersistenceManagerLocal {

  @PersistenceContext(unitName = PersistentSettings.PERSIST_NAME)
  private EntityManager entityManager;

  @Override
  public List<PropertyList> getPropertyList(int id) {
    System.out.println("inside MyPersistenceManagerBean.getPropertyList()");
    ......
    ......
    ......
  }
}

我会在另一个通话中调用它

@Stateless
public class ClientImpl implements Client {

  @EJB
  MyPersistenceManagerLocal persistenceManager;

  final List<PropertyList> dbList = persistenceManager.getPropertyList(id);

}

我收到 NullPointerException

final List<PropertyList> dbList = persistenceManager.getPropertyList(id);

在 Debug模式下,我发现 persistenceManager 为空。

我是 EJB 和 JPA 的新手,无法解决这个问题。任何帮助为什么我将 persistenceManager 设为 null

最佳答案

您收到 NPE,因为容器尚未注入(inject)所需的 bean。 您需要在 @PostConstruct 方法中设置它,即

@Stateless public class ClientImpl implements Client {

   @EJB MyPersistenceManagerLocal persistenceManager;

   private List dbList;
   @PostConstruct
   public void init(){
        dblist = persistenceManager.getDbList();
   }

}

关于java - 我的 persistenceManager 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4768078/

相关文章:

java - 设置Java环境变量?

java - Java 32 位系统 int[] 数组的内存大小

hibernate - Spring Boot 上的 SQL 方言配置

mysql - 如何在不检查 MySQL 中的 AUTOINCREMENT 的情况下增加主键

java - Seam 不注入(inject)有状态的 EJB 依赖

jakarta-ee - jBoss EAR-EJB jndi java :global working, java:app NameNotFoundException

java - 我们如何计算大数字的行驶距离‽

java - 强制 jboss 6 在部署后拾取 jar

java - hibernate 时从 parent 到 child 的ID

java - 如何防止 "Local transaction already has 1 non-XA Resource"异常?