为什么“实体未被管理”一旦从EJB传递到托管bean?

时间:2015-07-22 20:24:10

标签: hibernate jpa ejb managed-bean

我正在处理一个问题,即在实体传递给{{1}后,我尝试在EntityManager.refresh / JPA映射HibernateEntity managed bean }}。在托管bean中,我在refreshEntity中调用方法EJB,但我得到了

java.lang.IllegalArgumentException: Entity not managed

这不应该是这种情况,因为实际上应该管理实体,因为我刚刚通过JPA将它加载到EJB中:

public List<Entity> loadEntities(Parent _parent) {

    List<Entity> result = null;

    Query query = this.entMngr.createNamedQuery("Entity.getAllForParent");

    query.setParameter("parent", _parent);

    try {
        result = (List<Entity>)query.getResultList();
    } catch (NoResultException e) { 

    }

    return result;
}

在托管bean中调用该方法:

private void refreshEntityList() {

    this.entityList = this.mngrBean.loadEntities(this.parent);
}

但是,只要任何实体从EJB传递到托管bean,它就会停止管理,我知道它,因为我在EJB中创建了以下方法:

public void refreshEntity(Entity entity) {

    this.entMngr.refresh(entity);
}

通过抛出上述异常从托管bean调用时失败。在进一步的调试中,我尝试在返回之前从循环中的refreshEntity调用loadEntities(仅用于测试,没有功能值):

for(Entity item : result) {
    this.refreshAppeal(item);
}

哪个有效。但是,在托管bean的refreshEntityList之后立即执行相同的操作会导致错误。

实体在从EJB到托管bean的过程中会发生什么变化才能停止管理?

0 个答案:

没有答案