小编tva*_*zac的帖子

EntityManager.createQuery()抛出NullPointerException

每次调用EntityManager.createQuery()EntityManager.createNamedQuery()调用时都会出现NullPointerException .

我正在使用Glassfish 4.0,Hibernate 4.3.5和EJB.

我有以下层次结构:

DaoTemplate我有PersistenceContext和泛型方法

@Singleton
public class DaoTemplate<T extends IdEntityInterface> {
    @PersistenceContext(unitName = "pu_name")
    protected EntityManager em;
    ....
}
Run Code Online (Sandbox Code Playgroud)

带构造函数的抽象类beacuse bean不能扩展另一个bean.

public abstract class AbstractDaoTemplate<T extends IdEntityInterface> extends    DaoTemplate<T> {

    public AbstractDaoTemplate(Class<T> entityClass) {
        super(entityClass);
    }

}
Run Code Online (Sandbox Code Playgroud)

然后我有Dao.

@Singleton
public class SomeDao extends AbstractDaoTemplate<SomeEntity> {

    public SomeDao() {
        super(SomeEntity.class)
    }        

    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    public List<SomeEntity> someDaoMethod() {
        ...
        em.createQuery("SomeQuery");
        ...   
    }
}
Run Code Online (Sandbox Code Playgroud)

当调用someDaoMethod时,NullPointerException被抛出,em.createQuery("SomeQuery")em不是null.

我也尝试em.createQuery("SomeQuery")从调试器窗口调用,这里是输出:

Exception occurred in target VM: …
Run Code Online (Sandbox Code Playgroud)

hibernate java-ee glassfish-4

5
推荐指数
1
解决办法
8421
查看次数

标签 统计

glassfish-4 ×1

hibernate ×1

java-ee ×1